java web中jsp与servlet之间的跳转和传递参数
一、jsp跳转到servlet并传递参数:
在jsp中使用下列两种方式跳转到servlet
a> (此时可以传递参数,也可以传递属性值)
1.通过page属性来传递参数值
在doXX()方法中使用request.getParameter("name")获取参数值
2.通过
在doXX()方法中使用request.getParameter("name")获取参数值
3.在跳转之前设置属性-属性值的话,可以将属性-属性值传递到servlet中。
如在jsp中使用: 或者
然后:
在servlet中使用:req.getAttribute("name") 或者session.getAttribute("name")便可以将属性值取出。
注意:因为使用forward跳转,jsp的request范围是servlet的request范围的子集。
b> response.sendRedirect(“servlet的url-parrten”)(此方法也可以传递参数,但不能传递属性值)
1.通过属性来传参数值
在doXX()方法中使用request.getParameter("name")获取参数值
2.在跳转之前设置属性-属性值的话,不能将属性-属性值传递到servlet中
注意:因为使用response.sendRedirect(" ")跳转,jsp和servlet的request不是同一个,所以不能用来传递属性值。
c> 通过浏览器地址栏来传参数值
在doXX()方法中使用request.getParameter("name")获取参数值。
二、servlet跳转到jsp并传递参数:
在servlet的doXX()方法中调用下列语句跳转到jsp
a>resp.sendRedirect(req.getContextPath()+“/ ……” );(此时可以传递参数,但不能传递属性值)
1.通过属性来传递参数值
在jsp中使用request.getParameter("name")获取参数值。
注意: req.getContextPath()取出的是/工程名,而http://127.0.0.1是自动添加的。
2.在跳转之前设置属性-属性值的话,不能将属性-属性值传递到jsp中
注意:因为使用response.sendRedirect(" ")跳转,jsp和servlet的request不是同一个,所以不能用来传递属性值。
b>this.getServletConfig().getServletContext.getRequestDipatcher(“/ ……”).forward(req,resp)
注意:此方法不能传参,但是能够传递属性值
1.在跳转之前设置属性-属性值的话,可以将属性-属性值传递到jsp中。
如在servlet中使用:req.setAttribute("name","liuanxin");%> 或者session.setAttribute("name","liuanxin");
然后:this.getServletContext.getRequestDipatcher(“/……”).forward(req,resp)
在servlet中使用:req.getAttribute("name") 或者session.getAttribute("name")便可以将属性值取出。
注意:因为使用forward跳转,servlet的request范围是jsp的request范围的子集。
c>this.getServletContext.getRequestDipatcher(“/……”).forward(req,resp)
注意:此方法不能传参,但是能够传递属性值
1.在跳转之前设置属性-属性值的话,可以将属性-属性值传递到jsp中。
如在servlet中使用:req.setAttribute("name","liuanxin");%> 或者session.setAttribute("name","liuanxin");
然后:this.getServletContext.getRequestDipatcher(“/……”).forward(req,resp)
在servlet中使用:req.getAttribute("name") 或者session.getAttribute("name")便可以将属性值取出。
注意:因为使用forward跳转,servlet的request范围是jsp的request范围的子集。
以上的a>、b>、c>中的“/”的后面跟上jsp页面所在的文件夹及.jsp文件。且“/”必须写。