jsp與Servlet之間傳值分爲四種,Servlet向jsp頁面傳值,jsp向Servlet傳值,Servlet之間傳值,jsp之間傳值.
一:Servlet向jsp頁面傳值
1,利用request這個對象在Servlet中設置鍵值對,在jsp頁面通過鍵獲取值,
request.setAttribute("key", value);
key代表鍵,是一個字符串,jsp頁面通過這個字符串可以獲取值,注意key一定要一致
<%
String s =(String)request.getAttribute( "key");
%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String errorKey =(String)(request.getAttribute("errorKey")==null?"":request.getAttribute("errorKey"));
String demoKey =(String)(request.getAttribute("demoKey")==null?"default_demo":request.getAttribute("demoKey"));
String imageUrl = basePath+"chartJson?parameter="+demoKey;
%>
注意通過request獲取到的值是Object類型的需要強轉,還有就是用這種方法不能用重定向到jsp頁面,要用轉發
request.getRequestDispatcher("/…….jsp").forward(request, response);
2,利用跳轉Servlet,
response.sendRedirect("/…….jsp?username="+username);
jsp頁面:
<%
String s = (String) request.getParameter("username");
%>
二:jsp向Servlet傳值
1,通過超鏈接傳值
jsp頁面:
<a href="JspServlet?action=toServlet">click me</a>
Servlet代碼:
String d = request.getParameter("action");
2,通過form表單傳值
jsp頁面:
<!--<form action="JspServlet?action=toServlet" method="post" name="form"> -->
<form action="LoginServlet">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit" value="登錄">
</form>
Servlet代碼:
String username = request.getParameter("username");
String password = request.getParameter("password");
3,還可以通過java代碼傳值,不建議這麼寫,在後期維護很麻煩
三:Servlet之間傳值
1,通過session對象,一個瀏覽器就是一個會話,使用兩個瀏覽器無法獲得值
HttpSession session = request.getSession();
session.setAttribute("user", user);
先獲取session對象在把值通過鍵值對傳輸
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
2,直接跳轉,和Servlet向jsp頁面傳值一樣在跳轉文件後面添加值
response.sendRedirect("BServlet?username=qu");
接收:
request.getParameter("username");
四:jsp之間傳值:
傳輸:
<%
request.setAttribute("username","username");
%>
<jsp:forward page="demo2.jsp"/>
接收:
<%
String username = (String)request.getAttribute("username");
%>
其實用的是java代碼,注意要用轉發