如何在没有scriptlet的情况下从jsp调用servlet?

时间:2014-05-19 10:01:36

标签: java jsp servlets

我是jsp的新手,我创建了jsp页面来搜索。我也写过servlet。但是,我并不热衷于在这些之间进行互动。

我的web.xml看起来像

<servlet>
    <servlet-name>HotelSearch</servlet-name>
    <servlet-class>it.testproject.HotelSearch</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HotelSearch</servlet-name>
    <url-pattern>/HotelSearch</url-pattern>
</servlet-mapping>

我的servlet名称是HotelSearch.java,搜索页面是Default.jsp,我想在servlet调用后重定向到SearchResults.jsp。

任何人都可以告诉我怎么做。谢谢。

3 个答案:

答案 0 :(得分:4)

第1步:加载default.jsp我猜你有一个表单来提交搜索查询,如

  <form method="post" action="HotelSearch">
  //action is your url pattern and method is your choice get or post
    // your text box
   </form>

第2步:现在在servlet中执行搜索的业务逻辑          然后将结果数据放入请求

 req.setAttribute("key",value); //value is object

 dispatch your request with data to `SearchResults.jsp` 
 req.getRequestDispatcher("SearchResults.jsp").forward(req,resp);

第3步:使用req.getAttribute(“key”)在SearchResults.jsp中显示数据

提示

最好的方法是在web.xml中配置jsp文件

<servlet>
      <servlet-name>myjsp</servlet-name>
      <jsp-file>jsp/SearchResults.jsp</jsp-file>
 </servlet>
 <servlet-mapping>
      <servlet-name>myjsp</servlet-name>
      <url-pattern>/jsp_url</url-pattern>
 </servlet-mapping>

现在你可以使用

req.getRequestDispatcher("jsp_url").forward(req,resp);

答案 1 :(得分:1)

所以你想要:

  1. 使用表单从第一个jsp发送数据到servlet:

    &lt; form action =&#34; servlet_url&#34;&gt;     &lt;输入类型=&#34;提交&#34; ...&gt; &LT; /形式&GT;

  2. 从servlet重定向到第二个jsp:

    (HttpServletResponse的)response.sendRedirect是(&#34; jsp_url&#34);

答案 2 :(得分:1)

在客户端

确保您的代码正确设置了操作:

<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<FORM action="${ctx}/HotelSearch">
    <input type="text" name="queryString">
</FORM>

在Servlet中

response.sendRedirect(request.getContextPath()+“/ SearchResults.jsp”);