Servlet与JSP 之间的传值有两种情况JSP > Servlet Servlet > JSP
通过对象 request和 session (不考虑 application)完成传值
一JSP > servlet
JSP页面有种方法向 servlet传值 form表单URL
- <!JSPpage>
-
- <%
- sessionsetAttribute("testSession""Hellosession");
- reqeustsetAttribute("testRequest""Hellorequest");
- %>
- <ahref="JspServlet?action=toServlet">点击</a>
- <formaction="JspServlet?action=toServlet"method="post"name="form">
- <inputname="username"type="test"/>
- <inputtype="submit"value="submit">
- </form>
对于该JSP页面 form表单的内容如 <input>标签在 servlet可用 requestgetParameter("username");获取
URL比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet?action=toServlet"在 servlet同样用 requestgetParameter("action")获取所要注意的是这里的 url 要和 servlet在webxml里的 <urlpattern>标签的路径所对应这部分后面会提到
java片段代码servlet只能接到 sessionsetAttribute("testSession""Hello session")的内容而接不到 request的内容在 servlet里用 requestgetSession()getAttribute("testSession")获取 session内容
二Servlet
关于 servlet首先要提到它在 webxml里的注册内容如
- <servletname>JspServlet</servletname>
- <servletclass>comdemoJspServletDemo</servletclass>
- </servlet>
- <servletmapping>
- <servletname>JspServlet</servletname>
- <urlpattern>/JspServlet</urlpattern>
- </servletmapping>
- <servletname>JspServlet</servletname>
- <servletclass>comdemoJspServletDemo</servletclass>
- </servlet>
- <servletmapping>
- <servletname>JspServlet</servletname>
- <urlpattern>/admin/JspServlet</urlpattern>
- </servletmapping>
假如 project name 是 jspservlet则该 project根目录的 Context是 /jspservlet在地址栏里显示是 http://localhost:/jspservlet/
在 project 根目录下有 admin目录对应的 Context是/admin/jspservlet在地址栏里显示是 http://localhost:/jspservlet/admin
在这两个目录下的 jsp 都想转到 comdemoJspServletDemo类做处理这时的 url需要在 webxml注册两次
)在 http://localhost:/jspservlet/ 目录下的 jsp 页面 JspServlet
url应写为 "JspServlet"
)在 http://localhost:/jspservlet/admin/ 目录下的 jsp 页面访问 JspServleturl应写为 "admin/JspServlet"
在 servlet直接用 request对象得到发送来的请求内容用 requestgetSession()得到 session对象从而得到会话内容
这里的 requestgetSession()的参数为 boolean 类型该方法意思可理解为
session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的)getSession都是返回当前用户的会话对象参数的区别在于
参数为true (默认)则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回
参数为false则如果“当前用户的会话对象”为空则返回 null (即不自动创建会话对象)
利用这个方法可以判断 session是否过期如下
- if(requestgetSession(false)==null)
- Systemoutprintln("Sessionhasbeeninvalidated!");
- else
- Systemoutprintln("Sessionisactive!");
三Servlet > JSP
从 servlet转到 jsp不外乎两种方法重定向 和 url转发
重定向 ( Redirect)是路径的跳转内容和 url都改变不允许带 request参数( session参数可以)即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面在 servlet里使用 responsesendRedirect(url) 方法注意这里的 url前不带斜线 /如 responsesendRedirect(”testjsp“)
url转发 ( Forward)是页面的跳转页面内容发生改变url不变可以带 request和 session参数在 servlet里使用 getServletConfig()getServletContext()getRequestDispatcher(url)forward(request response)而这里的 url前需要带斜线 /如getServletConfig()getServletContext()getRequestDispatcher(”/testjsp“)forward(request response)
- Stringfr="goodwell";
- requestsetAttribute("test"fr);
- RequestDispatcherde=requestgetRequestDispatcher("/testjsp");
- deforward(requestresponse);