1 问题描述
我们在写jsp页面时,如果总是将java代码和html代码写在一起的话就会看着非常的乱,而且不利于我们发现代码的错误。因此我们将java代码和html代码分开来写,因此就有了Servlet这个东西。Servlet是一个很方便的功能,让我们的代码更有层次,而且更容易发现我们在开发中的错误。那么,将java代码和html代码分开的话,就肯定会涉及到Servlet和Jsp之间传递参数的问题,今天主要就讲讲参数是如何在JSP和Servlet之间游走的。
2 解决方案
Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp;使用request、response对象完成传值,具体实现如下:
1.JSP传值给Servlet
JSP传值给Servlet有几种形式:Form表单传值,url传值,其他方式传值
(1).form表单传值:
JSP页面有:<input type="text" name="username" value="1" id=" username" />
,将username的id传到Sevlet中,在程序中如下:
String username=request.getParameter("username");
可获取jsp传username。
(2).url传值
比如这里的a标签的href属性与form标签的 action属性的值 “Servlet? username=1”,在 servlet同样用 request.getParameter("username")
获取;
(3).java代码传值
java片段代码,servlet只能接到session.setAttribute("testSession","Hello session")
的内容,而接不到 request的内容。在 servlet里用request.getSession().getAttribute("testSession")
获取 session内容。
2.Servlet传值给Jsp
具体实现如下:
java代码:String a= "abccdefg ";
request.setAttribute( "ValueA ",a);
request.getRequestDispatcher( "网址/jsp页面 ").forward(request,response);
jsp页面:
<%
String s =(String)request.getAttribute( "ValueA ");
%>
jsp页面就可以取出Servlet的值。从 servlet转到 jsp不外乎两种方法,重定向 和 url转发。
(1).重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url)
方法。注意这里的 url前不带斜线 /,如response.sendRedirect(“test.jsp”)
(2).url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用
getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response);
而这里的url前需要带斜线 /,如:
getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response);
3 总结
让参数游走的方法也就那么几种只要我们熟练的掌握之后就能如鱼得水般的顺利。只要我们知道如何传递Servlet和Jsp之间的参数,那么我们做项目就容易很多了。