1.利用cookie对象
Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置。一般不赞成使用Cookie。
(1)后台代码
1.利用cookie对象
Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置。一般不赞成使用Cookie。
(1)后台代码
1
2
|
Cookie cookie= new Cookie( "name" , "hello" );
response.addCookie(cookie);
|
(2)前台代码
1
2
3
4
5
6
|
Cookie[] cookies=request.getCookies();
for ( int i= 0 ;i<cookies.length;i++){
if (cookies[i].getName().toString().equals( "name" )){
out.print(cookies[i].getValue());
}
}
|
2.利用session对象
session对象表示特定会话session的用户数据。客户第一次访问支持session的JSP网页,服务器会创建一个session对象记录客户的信息。当客户访问同一网站的不同网页时,仍处于同一个session中。
(1)后台代码
1
2
3
|
request.getSession().setAttribute( "name" , name);
request.getSession().setMaxInactiveInterval( 2 );
response.sendRedirect( "welcome.jsp" );
|
(2)前台代码(jsp页面)
1
|
Object user=request.getSession().getAttribute( "name" );
|
3.利用request重定向,设置setAttribute
(1)后台代码
1
2
|
request.setAttribute( "name" , "cute" );
request.getRequestDispatcher( "welcome.jsp" ).forward(request, response); //网址不会改变
|
PS:如果后台使用的转发代码为 response.sendRedirect("welcome.jsp"); //网址变为welcome.jsp
则request设置的参数无效,因为已经切换到另一个请求了,request参数的有效期为本次请求。
(2)前台代码
1
|
String name=request.getAttribute( "name" ).toString();
|
4.利用Ajax进行异步数据请求(得到的数据可以以json或xml格式返回,便于处理)
(1)后台代码案例(运用servlet传输数据)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class TestServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public TestServlet() {
super ();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
String data= "[{\"name\":\"apple\",\"price\":23},{\"name\":\"banana\",\"price\":12},{\"name\":\"orange\",\"price\":8}]" ;
out.write(data);
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
|
2.前台js请求处理数据代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
function createXMLHttpRequest(){
var xmlrequest;
if (window.XMLHttpRequest){
xmlrequest= new XMLHttpRequest();
} else if (window.ActiveXObject){
try {
xmlrequest= new ActiveXObject( "Msxm12.XMLHTTP" );
} catch (e){
try {
xmlrequest= new ActiveXObject( "Microsoft.XMLHTTP" );
} catch (e){
xmlrequest= "" ;
}
}
}
return xmlrequest;
}
//获取数据的函数
function change(){
var xmlrequest=createXMLHttpRequest();
xmlrequest.open( "POST" , "TestServlet" , true );
xmlrequest.onreadystatechange=function(){
if (xmlrequest.readyState== 4 &&xmlrequest.status== 200 ){
var data=JSON.parse(xmlrequest.responseText);
var content= "<table border=1>" ;
for (var i= 0 ;i<data.length;i++){
content+= "<tr>" ;
for (o in data[i]){
content+= "<td>" +data[i][o]+ "</td>" ;
}
content+= "</tr>" ;
}
content+= "</table>" ;
document.getElementById( "test" ).innerHTML=content;
}
};
xmlrequest.send();
}
|
总结:在用户访问网站整个生命周期中都会用到的数据用session来存储,例如用户名,登录状态,购物车信息
显示在网页上的信息数据大多通过 request或Ajax方式获取
| |
(2)前台代码
1
2
3
4
5
6
|
Cookie[] cookies=request.getCookies();
for ( int i= 0 ;i<cookies.length;i++){
if (cookies[i].getName().toString().equals( "name" )){
out.print(cookies[i].getValue());
}
}
|
2.利用session对象
session对象表示特定会话session的用户数据。客户第一次访问支持session的JSP网页,服务器会创建一个session对象记录客户的信息。当客户访问同一网站的不同网页时,仍处于同一个session中。
(1)后台代码
1
2
3
|
request.getSession().setAttribute( "name" , name);
request.getSession().setMaxInactiveInterval( 2 );
response.sendRedirect( "welcome.jsp" );
|
(2)前台代码(jsp页面)
1
|
Object user=request.getSession().getAttribute( "name" );
|
3.利用request重定向,设置setAttribute
(1)后台代码
1
2
|
request.setAttribute( "name" , "cute" );
request.getRequestDispatcher( "welcome.jsp" ).forward(request, response); //网址不会改变
|
PS:如果后台使用的转发代码为 response.sendRedirect("welcome.jsp"); //网址变为welcome.jsp
则request设置的参数无效,因为已经切换到另一个请求了,request参数的有效期为本次请求。
(2)前台代码
1
|
String name=request.getAttribute( "name" ).toString();
|
4.利用Ajax进行异步数据请求(得到的数据可以以json或xml格式返回,便于处理)
(1)后台代码案例(运用servlet传输数据)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class TestServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public TestServlet() {
super ();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
String data= "[{\"name\":\"apple\",\"price\":23},{\"name\":\"banana\",\"price\":12},{\"name\":\"orange\",\"price\":8}]" ;
out.write(data);
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
|
2.前台js请求处理数据代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
function createXMLHttpRequest(){
var xmlrequest;
if (window.XMLHttpRequest){
xmlrequest= new XMLHttpRequest();
} else if (window.ActiveXObject){
try {
xmlrequest= new ActiveXObject( "Msxm12.XMLHTTP" );
} catch (e){
try {
xmlrequest= new ActiveXObject( "Microsoft.XMLHTTP" );
} catch (e){
xmlrequest= "" ;
}
}
}
return xmlrequest;
}
//获取数据的函数
function change(){
var xmlrequest=createXMLHttpRequest();
xmlrequest.open( "POST" , "TestServlet" , true );
xmlrequest.onreadystatechange=function(){
if (xmlrequest.readyState== 4 &&xmlrequest.status== 200 ){
var data=JSON.parse(xmlrequest.responseText);
var content= "<table border=1>" ;
for (var i= 0 ;i<data.length;i++){
content+= "<tr>" ;
for (o in data[i]){
content+= "<td>" +data[i][o]+ "</td>" ;
}
content+= "</tr>" ;
}
content+= "</table>" ;
document.getElementById( "test" ).innerHTML=content;
}
};
xmlrequest.send();
}
|
总结:在用户访问网站整个生命周期中都会用到的数据用session来存储,例如用户名,登录状态,购物车信息
显示在网页上的信息数据大多通过 request或Ajax方式获取