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对象中的内容会自动被清除.
<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表达式