Parece que está intentando crear una aplicación de raspado web. Para este propósito, recomiendo la biblioteca HtmlUnit.
Hace que sea fácil trabajar con formularios, proxies y datos incrustados en páginas web. Debajo del capó, creo que utiliza el HttpClient de Apache para manejar las solicitudes HTTP, pero esto probablemente sea demasiado bajo para que te preocupe.
Con esta biblioteca puede controlar una página web en Java de la misma manera que la controlaría en un navegador web: haciendo clic en un botón, escribiendo texto, seleccionando valores.
Éstos son algunos ejemplos de HtmlUnit's getting started page:
enviar un formulario:
@Test
public void submittingForm() throws Exception {
final WebClient webClient = new WebClient();
// Get the first page
final HtmlPage page1 = webClient.getPage("http://some_url");
// Get the form that we are dealing with and within that form,
// find the submit button and the field that we want to change.
final HtmlForm form = page1.getFormByName("myform");
final HtmlSubmitInput button = form.getInputByName("submitbutton");
final HtmlTextInput textField = form.getInputByName("userid");
// Change the value of the text field
textField.setValueAttribute("root");
// Now submit the form by clicking the button and get back the second page.
final HtmlPage page2 = button.click();
webClient.closeAllWindows();
}
utilizando un servidor proxy:
@Test
public void homePage_proxy() throws Exception {
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", myProxyPort);
//set proxy username and password
final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider();
credentialsProvider.addProxyCredentials("username", "password");
final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
webClient.closeAllWindows();
}
La clase WebClient
es único roscado, por lo que cada hilo que ofertas con una página web necesitará su propia instancia WebClient
.
A menos que necesite para procesar Javascript o CSS, también se puede desactivar estos cuando se crea el cliente:
WebClient client = new WebClient();
client.setJavaScriptEnabled(false);
client.setCssEnabled(false);
La pregunta parece ser bastante clara del lado del cliente. Los servlets y JSP no son relevantes para la funcionalidad del lado del cliente. – lexicore
No parece que jorik1000 intente desarrollar una aplicación de servidor, sino un cliente web especializado que raspa y envía información. HttpUnit está diseñado para facilitar las pruebas unitarias de páginas web, pero como consecuencia también es una buena herramienta para trabajar con una página web de alto nivel en aspectos generales como extraer información y rellenar formularios. –
¿Las JSP no son del lado del cliente? – duffymo