1. 程式人生 > >java與前端互動的方式

java與前端互動的方式

第一種、通過session存取值

  Session會話域,Session在使用者訪問第一次訪問伺服器時建立,伺服器會把長時間沒有活動的Session從伺服器記憶體中清除,此時Session便失效。Tomcat中Session的預設失效時間為20分鐘。另可呼叫Session的invalidate方法使其失效。

jsp部分:

<span style="font-family:SimSun;"><%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>SessionTest</title>  
</head>  
<body>  
    <form action="SessionTest" type="get">  
        <input type="submit" value="提交"></form>  
        <h2><%=session.getAttribute("username")%></h2>  
</body>  
</html></span>  
java部分:
package com.cool.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SessionServ
 */
@WebServlet("/SessionServ")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session=request.getSession();
		session.setAttribute("username","吳彥祖");
//重定向回到先前頁面
		request.getRequestDispatcher("SessionTest.jsp").forward(request, response);
	}

}
第二種、ajax存取單個數據

jsp部分:

<%@page import="java.util.*" language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  
     <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script>
window.onload=function(){
	var btn=document.getElementById("btn");
	btn.onclick=function(){
		var show=document.getElementById("show");
		//readyState==0 未初始化
		var httpxml = new XMLHttpRequest();
		//readyState==3 正在接受
		//readyState==4 接受完畢
		httpxml.onreadystatechange = function() {
			//alert(httpxml.readyState)
			if (httpxml.readyState == 4 && httpxml.status == 200) {	
				var getStr = httpxml.responseText;//獲得後臺資料
				show.innerHTML=getStr;
			}
		}
		//readyState==1 已開啟,為send()做準備
		httpxml.open("post","ajaxtest",true);
		//readyState==2 已傳送
		httpxml.send();
	}
}
</script>
</head>
<body>
	<h2>ajax資料互動demo</h2>
	<input type="button" id="btn"/>
	<div id="show"></div>
</body>
</html>

java部分:
package com.cool.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.xwork2.ActionContext;

/**
 * Servlet implementation class TestServlet
 */
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out=response.getWriter();
		out.print("ajax互動成功!");
	}

}

第三種、json存取多個物件或資料

jsp部分:

<%@page import="java.util.*" language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  
     <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script>
window.onload=function(){
	var btn=document.getElementById("btn");
	btn.onclick=function(){
		var show=document.getElementById("show");
		//readyState==0 未初始化
		var httpxml = new XMLHttpRequest();
		//readyState==3 正在接受
		//readyState==4 接受完畢
		httpxml.onreadystatechange = function() {
			//alert(httpxml.readyState)
			if (httpxml.readyState == 4 && httpxml.status == 200) {	
				var getStr = httpxml.responseText;
				var o=JSON.parse(getStr);	
				var str="";
				for(var i=0;i<o.length;i++){
					str+="名字:"+o[i].name+";性別:"+o[i].sex+";年齡:"+o[i].age+"</br>";
				}
				show.innerHTML=str;
			}
		}
		//readyState==1 已開啟,為send()做準備
		httpxml.open("post","JsonTest",true);
		//readyState==2 已傳送
		httpxml.send();
	}
}
</script>
</head>
<body>
	<h2>json資料互動demo</h2>
	<input type="button" id="btn"/>
	<div id="show"></div>
</body>
</html>
java部分:
package com.cool.servlet;

import java.awt.List;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cool.bean.Student;

import net.sf.json.JSONArray;

/**
 * Servlet implementation class JsonServlet
 */
@WebServlet("/JsonServlet")
public class JsonServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public JsonServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ArrayList<Student> list=new ArrayList<Student>();
		for(int i=0;i<3;i++){
			Student stu=new Student();
			stu.setName("Tom");
			stu.setSex("男");
			stu.setAge(i+10);
			list.add(stu);
		}
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		out.print(JSONArray.fromObject(list));
		out.flush();
		out.close();
	}

}

第四種、html賦值

   總所周知,input有個屬性是hidden,它可以使input隱藏但不佔用空間。因此,我們可以把想要傳遞到後臺的資料儲存到value,讓後臺通過標識獲得這個資料。

jsp部分:

<input type="hidden" name="stu_name" value="我是資料">
java部分:
String stu_name=request.getParameter("stu_name")

如果還有其他資料互動的方法,歡迎補充;若文中尚有不妥之處,希望可以得到您的糾正。