文档库 最新最全的文档下载
当前位置:文档库 › JSP与 servlet之间的传值

JSP与 servlet之间的传值

JSP与 servlet之间的传值
JSP与 servlet之间的传值

这几天做了一个项目,大量用到了JSP与servlet之间的传值,总结了一下

JSP与servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP.

通过对象request和session (不考虑application)完成传值.

一、JSP -> servlet

JSP页面有3种方法向servlet传值:form表单、URL 、其他

...

<%......

session.setAttribute("testSession","Hello session");

reqeust.setAttribute("testRequest","Hello request");

%>

click me

...

1、对于该JSP页面form表单的内容,如标签,在servlet可用request.getParameter("username");获取.

2、URL:比如这里的标签的href属性与

标签的action属性的值"JspServlet?action=toServlet",在servlet同样用request.getParameter("action")获取;所要注意的是这里的url 要和servlet在web.xml里的标签的路径所对应.这部分后面会提到.

3、java片段代码,servlet只能接到session.setAttribute("testSession","Hello session")的内容,而接不到request的内容.在servlet里用request.getSession().getAttribute("testSession")获

取session内容.

二、Servlet

1、关于servlet,要提到它在web.xml里的注册内容,如

JspServlet1

com.demo.JspServletDemo

JspServlet1

/JspServlet

JspServlet2

com.demo.JspServletDemo

JspServlet2

/admin/JspServlet

假如project name 是jsp2servlet,则该project根目录的Context是/jsp2servlet,在地址栏里显示是http://localhost:8080/jsp2servlet/;

在project 根目录下有admin目录,对应的Context是/admin/jsp2servlet,在地址栏里显示是http://localhost:8080/jsp2servlet/admin,

在这两个目录下的jsp 都想转到com.demo.JspServletDemo类做处理,这时的url需要在web.xml注册两次.

1)在http://localhost:8080/jsp2servlet/ 目录下的jsp 页面JspServlet1,url应写为"JspServlet"

2)在http://localhost:8080/jsp2servlet/admin/ 目录下的jsp 页面访问JspServlet2,url应写为"admin/JspServlet"

2、在servlet直接用request对象,得到发送来的请求内容;用request.getSession(),得到session对象,从而得到会话内容.

这里的request.getSession()的参数为boolean 类型,该方法意思可理解为:

session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSession都是返回当前用户的会话对象,参数的区别在于:

参数为true (默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;

参数为false,则如果“当前用户的会话对象”为空,则返回null (即不自动创建会话对象).

利用这个方法可以判断session是否过期,如下:

if(request.getSession(false)==null)

System.out.println("Session has been invalidated!");

else

System.out.println("Session is active!");

三、Servlet -> JSP

从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)

相关文档