【J2EE学习】(二)Servlet向JSP传值

来源:互联网 发布:mac打字不显示候选框 编辑:程序博客网 时间:2024/05/23 01:57

 Servlet向JSP传值有两种方式:(1)通过session传值(2)通过RequestDispatcher重新分配资源

(服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect(),二是使用RequestDispatcher的forward()方法)

1.通过session传值

   
 HttpRequest对象有两种形式的getSession方法调用:
     一个是getSession(),
     另一个是getSession(boolean isNew)
     前者会检测当前是否有session存在,如果不存在则创建一个,如果存在就返回当前的。
     getSession()相当于getSession(true),
     参数为true时,若存在会话则返回该会话,否则新建一个会话。
     参数为false时,若存在会话则返回该会话,否则应该返回一个NULL
JSP代码片段
使用EL 表达式
<span id="span">${value}</span>
EL 表达式 EL (Expression Language)。主要作用:获取数据、执行运算、获取 Web 开发常用对象。
或者直接通过 表达式获取后台Servlet传的值
<%=session.getAttribute("value")%>
SERVLET代码片段(doPost方法:
request.getSession().setAttribute("value","Hello World!!");//获取session 添加变量value response.sendRedirect("index.jsp");//通过response重定向

2.通过RequestDispatcher

将 当前的request和response重定向到该RequestDispacher指定的资源。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另 外一个Servlet。RequestDispacher有两个方法include()方法与forward()方法,两个方法很类似.
利用include()方法将HTTP请求转送给其他Servlet 后,被调用的Servlet如果产生任何 HTTP回应,将会并入原来的HttpResponse对象,继续执行原来 Servlet的操作。
  • <1>在HTTP回应被“确认”(即已经成功返回给客户端信息)以前才能调用forward()方法,否则将拋出IllegalStateException异常。
  • <2>调用forward()方法后,原先存放在HttpResponse对象中的内容会自动被清除.
JSP代码片段:
<span id="span"><%=request.getAttribute("value")%></span>
Servlet代码片段(doPost方法):
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws                                                                                            javax.servlet.ServletException, IOException{    request.setAttribute("value", "Hello World!!I am smith Sun");    //这句代码就是说将当前servlet的数据转发到目的地(index.jsp)里    RequestDispatcher requestDispatcher = request.getRequestDispatcher("index.jsp");    //它是服务器端转发,一般还要把request和response传过去    requestDispatcher.forward(request, response);}
-------------------------------------------------------------------------------------------------------------------------------------
关于JSP与EL表达式的详细介绍,可以点击下面的链接
JSP与EL表达式



0 0
原创粉丝点击