在servlet 内实现跳转
博客专区 > chuiyuan 的博客 > 博客详情
在servlet 内实现跳转
chuiyuan 发表于3年前
在servlet 内实现跳转
  • 发表于 3年前
  • 阅读 23
  • 收藏 1
  • 点赞 0
  • 评论 0

我们实现 一个案例 :

     在  query.jsp 中输入学生的名字,在数据库中查询,查询结果在  queryResult.jsp 中显示。

 Servlet是控制者,作用是处理来自 JSP 页面的输入并从  JAVA BEAN中读取来自数据库的数据,再跳转到目标页面

一。使用response对象实现 跳转

1.query.jsp 

 <b>查询学生数据库</b>
    <form action="/proj4/servlet/QueryServlet"  method ="post">
    请输入学生的帐号:<input type ="text"  name ="account">
    <input  type ="submit"  value="查询">
    </form>

2. queryResult.jsp

 查询的关键字为:<%=session.getAttribute("account") %>

3.  QueryServlet.java 

public class QueryServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("gb2312");
		String account= request.getParameter("account");
		//数据库查询
		request.getSession().setAttribute("account", account);
		response.sendRedirect("/proj4/queryResult.jsp");
	}

}

将数据放入  session ,只有这样 ,在下一个页面中才能访问到。

request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。


二。使用forward方法实现跳转

只用更改servlet中的代码 

//数据库查询
		request.getSession().setAttribute("account", account);
		ServletContext application = this.getServletContext();
		RequestDispatcher rd = application.getRequestDispatcher("/queryResult.jsp");
		rd.forward(request, response);

前面 讲过,在  forward跳转中,可以保持 request中的值,而 redirect方法中不行。因此 ,我们这里还可以改成

request.setAttribute("account",account);

同时 ,在 queryResult.jsp中的代码 要改

<%=request.getAttribute("account")%>

问题,在 Servlet中,什么时候 用 redirect跳转,什么时候用 forward方法跳转。

当从页面A到  B,如果 存在大量的暂时的数据 (也就是在B显示后就不再会用到的),那么 ,为了节省 内存,我们用forward 跳转,可以避免将很多

内容 存在session 中,而导致服务 器内存过大,因为session 是在服务 器上的。






共有 人打赏支持
粉丝 10
博文 91
码字总数 40993
×
chuiyuan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: