js call java

本文档展示了如何使用JSP和Servlet进行交互,通过JSON数据格式进行客户端到服务端的数据传递。客户端使用JavaScript创建JSON对象并发送POST请求,服务端接收到请求后解析JSON对象并返回响应。
摘要由CSDN通过智能技术生成

客户端JSP  HTML 请求

服务端处理返回客户端

客户端解析返回值

 

配置文件:

 

1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme() + "://" 
    + request.getServerName() + ":" + request.getServerPort() 
    + path + "/"; 
%>
<!DOCTYPE html>
<html>
<head>

<title>My JSP 'JasonTest.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="json2.js"></script>
<script type="text/javascript"> 
function User(userId, name) 
{
	this.userId = userId;
	this.name = name; 
}

/**
 * 获取工程路径
 * 我X,12月了,今年最后一个月了,加油!!!
 *
 * @author ZengWenFeng
 * @date 2015.12.01
 */
function getRootPath()
{
	//获取当前网址,如: http://127.0.0.1:8089/PrjJsp/zengwenfeng.jsp
	var curWwwPath = window.document.location.href;
	
	//获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
    var pathName = window.document.location.pathname;
	
	var pos = curWwwPath.indexOf(pathName);
	
	//获取主机地址,如: http://localhost:8083
    var localhostPath = curWwwPath.substring(0, pos);
	
	//获取带"/"的项目名,如:/uimcardprj
    var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
    
	return (localhostPath + projectName);
}

function requestServlet()
{
// 	var urlStr = "http://127.0.0.1:8089/PrjJsp/JasonServlet";
	var user = JSON.stringify(new User(101,"zengwenfeng"));
	
	var urlStr = getRootPath() + "/JasonServlet";
	
// 	alert(getRootPath());
// 	alert(urlStr);
	
	//调用JQuery提供的Ajax方法
	$.ajax(
	{
		type:"POST",
		url:urlStr,
		data:user,
		dataType: "jason",//此处要设置成jason
		success: callback//回调函数
	});
}

function callback(jasonObj)
{
	var str = jasonObj;
	var obj = JSON.parse(str);//调用Json2.js中提供的JSON解析器来解析成JSONObject
	alert(obj.errNum);
}

function c()
{
	requestServlet();
}
</script>
</head>

<body>
<input type="button" onclick="c()" value="button">
</body>
</html>

 JasonServlet.java

package json;

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

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

import net.sf.json.JSONObject;

/**
 * E:\PRJ_J2EE\PrjJsp\WebContent\json\1.jsp
 * 
 * @author ZengWenFeng
 * @date 2015.09.02
 */
public class JasonServlet extends HttpServlet
{
	private static final long serialVersionUID = -689996185851434889L;

	/**
	 * Constructor of the object.
	 */
	public JasonServlet()
	{
		super();
	}

	public void destroy()
	{
		super.destroy(); // Just puts "destroy" string in log 
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doPost(request, response);
	}

	/**
	 * 解析客户端的JsonObject
	 * 
	 * 于谦
	 * 我昔少年时,垂髫发如漆。
	 * 锐意取功名,辛苦事纸笔。
	 * 
	 * 千锤万凿出深山,烈火焚烧若等闲。
	 * 粉身碎骨全不怕,要留清白在人间。
	 * 
	 * @author ZengWenFeng
	 * @date 2015.09.02
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	{
		try
		{
			// 获取requestContext
			String requestContext = readJSONString(request);

			// 转换JSONObject
			JSONObject jsonObj = JSONObject.fromObject(requestContext);//转换成JSONObject 

			// 获取对象属性
			System.out.println(jsonObj.getInt("userId"));//得到JSONObject的userId值 
			System.out.println(jsonObj.getString("name"));

			// 返回客户端对象
			JSONObject resultJSON = new JSONObject();//构建一个JSONObject 
			resultJSON.accumulate("errNum", 1);
			resultJSON.accumulate("errInfo", "ZengWenFeng_Success!!!");

			// 
			response.setContentType("application/x-json");//需要设置ContentType 为"application/x-json" 
			PrintWriter out = response.getWriter();
			out.println(resultJSON.toString());//向客户端输出JSONObject字符串 
			out.flush();
			out.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 * if an error occure
	 */
	public void init() throws ServletException
	{
		// Put your code here 
	}

	/**
	 * 
	 * 
	 * @param request
	 * @return
	 */
	public String readJSONString(HttpServletRequest request)
	{
		StringBuilder str = new StringBuilder();
		String line = null;
		
		try
		{
			BufferedReader reader = request.getReader();
			while ((line = reader.readLine()) != null)
			{
				str.append(line);
			}
		}
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
		
		return str.toString();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值