我的服务架构存在一些问题。我的任务如下:
http://localhost:8080/?startDate=05/15/2016&endDate=05/22/2016&origin=HKG&destination=LHR
好的,我在servlet的方法doGet()中使用以下代码获取此信息:
String startDate = req.getParameter("startDate").toString();
String endDate = req.getParameter("endDate").toString();
String origin = req.getParameter("origin").toString();
String destination = req.getParameter("destination").toString();
2.然后,使用此信息我需要在真实网站(不是我的)上填写表格,这个网站与我的Servlet没有任何关系。我是通过像HTMLUnit这样的Selenium库来完成的。所有这些都是由其他类中的某些方法执行的,但这些方法在servlet的 doGet()中调用。这些网站上的表格已经完成,我在新的网页上转移了结果
3.然后,我需要以我必须的方式解析这些结果。不管这是什么方式。解析结果应出现在与我的Servlet链接的网页上
问题是如何将所有这些步骤放在我的servlet中?我应该将什么传递给 doGet()方法?我应该传递给 doPost()?如何以这种方式调用 doPost()?因为现在我在doGet()中完成所有操作,我认为这不是最好的方法,因为 HTTP GET 应该是幂等的。
答案 0 :(得分:0)
我认为你需要RequestDispatcher
http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html
定义一个从客户端接收请求并发送的对象 它们可以访问任何资源(例如servlet, HTML 文件或JSP文件) 服务器。 servlet容器创建RequestDispatcher object,用作位于的服务器资源的包装器 特定路径或特定名称。
看看方法:
void forward(ServletRequest request, ServletResponse response)
尝试使用ServletRequest对象发送参数并获得响应。
答案 1 :(得分:0)
您不需要doPost
方法,因为客户端会在get request
中以uri或别名传递数据。
您只需从外部网站获取数据并构建您的回复:
public void doGet(HttpServletRequest request,
HttpServletResponse response){
// your request parsing
// Your Magic with Selenium
PrintWriter out = response.getWriter();
String data = //your data fetched from website by `Selenium` library
out.println(//**html with embedded data **//)
}
一个注意事项:
它看起来很可疑。我不认为它会正常工作。据我所知,Selenium需要一些时间进行导航等,因此您很容易发现timeout
错误代码