Apache Http Client 4.1: Impostare il proxy
Ottenuto in qualche modo un oggetto valido HttpClient, il resto è:
HttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost(proxyIP, proxyPort, "http");
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Ottenuto in qualche modo un oggetto valido HttpClient, il resto è:
HttpPost post = new HttpPost("http://localhost:8080/servlet...");
// Creo il file XML da inviare tramite post
xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?><... il mio file xml ..." ;
try {
post.setEntity(new StringEntity(xml));
HttpResponse response = httpclient.execute(post);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
} catch (UnsupportedEncodingException e) {
...
} catch (ClientProtocolException e) {
...
} catch (ParseException e) {
...
} catch (IOException e) {
...
}
Innanzitutto occorre importare la libreria:
poi dichiarare le variabili:
_session:TNotesSesion;
_notesdb:IDatabase;
_views: OleVariant;
_view: IView;
_documents: IDocumentCollection;
_document: IDocument;
ed ecco un pò di codice di esempio:
begin
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
try
// Creo la sessione
_session := TNotesSession.Create(nil);
// La inizializzo con la mia password notes
_session.Initialize('password');
// Creo l'oggetto database
_notesdb := _session.GetDatabase('server','database',False);
// Ecco come ottenere l'elenco di tutte le viste
_views := _notesdb.Views;
for I := 0 to VarArrayHighBound(_views, 1) - VarArrayLowBound(_views, 1) do
begin
_view := IView(IUnknown(_views[I]));
writeln(_view.Name);
end;
// Esempio di utilizzo della proprietà GetAllDocumentsByKey di una vista
_view := _notesdb.GetView('Lamiavista');
if _view <> nil then
begin
_documents := _view.GetAllDocumentsByKey('Valore della chiave',true);
//adesso che ho una collezione di documenti, la ciclo, ed estraggo il
// valore del campo 'pippo' di ogni documento
_document := _documents.GetFirstDocument;
while _document <> nil do
begin
writeln(String(_document.GetItemValue('pippo')[0]));
_document := _documents.GetNextDocument(_document);
end;
end;
readln;
end;
Scarica il progetto di esempio (Eclipse Helios).
Ho realizzato un progetto di esempio che integra Struts 2 e Tiles 2, da poter utilizzare come punto di partenza per progetti futuri. come IDE utilizzo Eclipse Elios, come servlet container Tomcat 7, il tutto dentra una Ubuntu 10.10 a 64 bit.
In maniera molto veloce e superficiale è sufficiente:
- creare un Progetto Web in Eclipse
- Aggiungere le librerie sotto indicate al progetto
- Aggiungere i file struts.xml e tiles.xml e configurarli correttamente
- configurare correttamente il file web.xml
- creare le eventuali jsp
Di seguito una immagine delle librerie e dei file presenti nel mio progetto Web:

Il file struts.xml deve contenere la seguente dichiarazione:
<package name="default" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
</package>
Nel mio esempio definisco la pagina in questo modo nel file tiles.xml:
<tiles-definitions>
<definition name="baseLayout" template="/BaseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/Header.jsp" />
<put-attribute name="menu" value="/Menu.jsp" />
<put-attribute name="body" value="/Body.jsp" />
<put-attribute name="footer" value="/Footer.jsp" />
</definition>
</tiles-definitions>
ovvero con 4 sezioni: header, menù, body e footer
Il risultato finale è la strabiliante pagina web:

Scarica il progetto di esempio (Eclipse Helios).
a>
Questo è un esempio di come si comportano diversamente il tag s:property e il tag s:text quando all’interno della stringa che deve essere visualizzata sono presenti tag HTML.
Considero una action con una proprietà di tipo String[] il cui valore di ogni elemento è simile a questo: ”
links[0] = "<a href=\"www.google.it\">google</a>";
ovvero contiene codice HTML che posso volere essere visualizzato come tale oppure essere iniettato nella pagina:
private String[] links;
public void setLinks(String[] links) {
this.links = links;
}
public String[] getLinks() {
return links;
}
public String execute() throws Exception {
setLinks(new String[]{}"<a href=\"http://www.google.it\">google</a>",
"<a href=\"http://www.twitter.com\">twitter</a>"");
return SUCCESS;
}
Nella JSP di ritorno della action scrivo:
<ul>
<s:iterator value="links" >
<li><s:property /></li>
</s:iterator>
</ul>
<ul>
<s:iterator value="links" var="link">
<li><s:text name="link"/></li>
</s:iterator>
</ul>
Il risultato che ottengo sono due liste, nella prima delle quali il codice html è visibile come tale, mentre nella seconda il codice html viene inettato all’interno della pagina, come innerhtml:
Utilizzando <s:property>:
<a href="www.google.it">google</a>
<a href="www.twitter.it">twitter</a>
Utilizzando <s:text>: