JSP与servlet之间的传值有两种情况:
JSP -> servlet,servlet -> JSP 通过对象request和session (不考虑application)完成传值。
一、JSP -> servlet
JSP页面有3种方法向servlet传值:
form表单、URL 、其他(暂不考虑)
<!-- JSP page -->
<%
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">click me</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...
1、对于该JSP页面form表单的的内容<input>标签在servlet的request.getParameter("username");获取。
2、URL:比如这里标签<a>的 href 属性与 <form>标签的 action属性的值"JspServlet?action=toServlet",在
servlet同样用request.getParameter("action")获取;所要注意的是这里的url 要和servlet在web.xml里的
<url-pattern>标签的路径所对应。
3、java片段代码,servlet只能接到session.setAttribute("testSession","Hello session")
的内容,而接不到request的内容。在servlet里用request.getSession().getAttribute("testSession")获取
session内容。
二、 servlet -> JSP
从servlet转到Jsp有两种方法:
重定向(Redirect)和url转发(Forward)
1. 重定向:是路径的跳转,内容和url都会改变。不允许带request参数(session参数可以),既不允许在servlet里给request
对象里使用setAttribute()方法将数据传递给下一个页面。
在servlet里使用response.sendRedirect(url);实现重定向。注意这里的url前不带斜线'/'.
2. url转发:是页面的跳转,页面内容发生改变,url不变。可以带request和session参数。
在servlet里使用:getServletConfig().getServletContext().getRequestDispatcher(url).forward(request,response);
而这里的url需要使用 ‘/'(表示从本应用的根目录的相对路径)