Servlet与JSP间的两种传值情况

情45420

情45420

2016-02-19 11:38

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐Servlet与JSP间的两种传值情况,无聊中的都看过来。
Servlet与JSP 之间的传值有两种情况: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"点击/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
1、关于 servlet,首先要提到它在 web.xml里的注册内容,如
代码如下:

servlet-nameJspServlet1/servlet-name
servlet-classcom.demo.JspServletDemo/servlet-class
/servlet
servlet-mapping
servlet-nameJspServlet1/servlet-name
url-pattern/JspServlet/url-pattern
/servlet-mapping
servlet-nameJspServlet2/servlet-name
servlet-classcom.demo.JspServletDemo/servlet-class
/servlet
servlet-mapping
servlet-nameJspServlet2/servlet-name
url-pattern/admin/JspServlet/url-pattern
/servlet-mapping

假如 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)
代码如下:

String fr="good well";
request.setAttribute("test", fr);
RequestDispatcher de=request.getRequestDispatcher("/test.jsp");
de.forward(request, response);
展开更多 50%)
分享

猜你喜欢

Servlet与JSP间的两种传值情况

编程语言 网络编程
Servlet与JSP间的两种传值情况

JSP与Servlet之一

Java JAVA基础
JSP与Servlet之一

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JSP与Servlet之二

Java JAVA基础
JSP与Servlet之二

与流产有关的两种抗原

怀孕
与流产有关的两种抗原

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JSP/Servlet/JSF:Servlet/JSP配置详解

Web开发
JSP/Servlet/JSF:Servlet/JSP配置详解

产后两种情况 新妈要限水

育儿 育儿知识 妈妈 儿歌 取名 婴儿 喂养 孕期 营养 怀孕 分娩 孕妇 教育 胎教 亲子游戏 奶粉 幼儿 宝宝 早教
产后两种情况 新妈要限水

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

java switch语句使用注意的四大细节

java switch语句使用注意的四大细节

Eclipse添加xml文件提示及Hibernate配置学习

Eclipse添加xml文件提示及Hibernate配置学习
下拉加载更多内容 ↓