JavaWeb的json包装以及跨域问题--博客园老牛大讲堂

1、下面内容简介---博客园老牛大讲堂

  下面我主要说一下javaweb端怎样利用MVC框架包装json数据。和json数据的跨域问题解决。

  这个文章不适用与javaEE初学者,需要一定基础。

2、知识补充:---博客园老牛大讲堂

  ①:java分为三种javaEE,javaSE,javaME

  ②:javaEE一般javaEE一般是开发服务器的,javaSE是开发桌面服务器的,javaME是开发移动端的。三种模式区别

  ③:javaEE一般是用来提供服务的(提供数据,就是通常说的后端),我下面的例子就是开发后端,为移动端或者网页前端提供服务的。

  ④:通常开发项目时候,前端和后端是分开的,例如一个web网页前端和一个javaEE后端。开发时候只需要商量好接口就行了,

    那么网页怎样获取数据呢?

    只有通过后端提供的数据。

    那么后端怎样提供数据呢?

    其实后端可以提供各种类型的数据例如:xml格式数据,json数据,txt数据等等。

    现在主流就是json数据的交互。我为大家讲解一下javaEE写服务端,json数据的包装。

3、下面例子是关于javaEE怎样包装json数据并且实现跨域问题。代码---博客园老牛大讲堂

  这个工程是一个简单的登录验证。

  这个工程首先有可能会报错,因为少了jar包的原因,那么jar包就自己下载把!java对json包装的jar包。

  目录结构图:

  

  Dao包的loginDao类

    

package Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Entity.Login;
import Util.Connec;

public class LoginDao {
	
	//登陆验证,用于测试用的---博客园老牛大讲堂
	public List<Login> getLogin(String username,String password)
	{
		List<Login> list=new ArrayList<Login>();
		Login login=new Login();
		list.add(login);
		return list;
	}
}

  Entity包的Login类

package Entity;

public class Login {
	
private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

  JsonTools包的JsonTools类

package JsonTools;


import net.sf.json.JSONObject;

public class JsonToos 
{
	//返回一个结果的json数据--博客园老牛大讲堂
	public String returnResult(String value)
	{     
         JSONObject jsonObject=new JSONObject();  
         jsonObject.put("result",value);  
         return jsonObject.toString();  
    } 
	
	//把list数据包装成json数据--博客园老牛大讲堂
	public String returnListJSON(String key,Object value)
	{
		JSONObject jsonObject=new JSONObject();  
        jsonObject.put(key,value);  
        return jsonObject.toString();
	}
}

  Server包的LoginSerlet类

package Server;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Dao.LoginDao;
import Entity.Login;
import JsonTools.JsonToos;

public class LoginSerlet extends HttpServlet {

	private JsonToos jsonToos=new JsonToos();
	private LoginDao loginDao=new LoginDao();
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request,response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//http://localhost:8080/A/LoginSerlet?username=1&password=1&callback
		//博客园老牛大讲堂
		String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK");
		String password=new String(request.getParameter("password").getBytes("ISO-8859-1"),"GBK");
		String callback=new String(request.getParameter("callback").getBytes("ISO-8859-1"),"UTF-8");
		
		String jsonstring="";
		List<Login> list=loginDao.getLogin(username, password);
		
		if(list.size()!=0){
			jsonstring=jsonToos.returnListJSON("result", "Success");
		}else{
			jsonstring=jsonToos.returnListJSON("result","Failure");
		}
		String jsoncallback = callback + "("+jsonstring+")";
		PrintWriter out = response.getWriter();
		out.println(jsoncallback);
		out.flush();
		out.close();
		
	}

}

  Util包的Connec类

package Util;

import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

public class Connec {
	
	//博客园老牛大讲堂,这里用了sqlserver数据库连接
	private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=sysxzx";
	private static String userName="root";
	private static String password="root";
	private static String parper="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	
	public static Connection getConnection(){
		try {
			Class.forName(parper);
			return DriverManager.getConnection(url, userName, password);
		} catch (Exception e) {
			 System.out.println("数据库连接出问题啦");
		}
		return null;
	}

	public static void close( Connection conn,Statement stmt){
		try {
			conn.close();
			stmt.close();
		} catch (SQLException e) {
			 System.out.println("数据库关闭出问题啦");
		}
	}

	public static void close(Connection conn ,Statement stmt,ResultSet rs){
		try {
			close(conn,stmt);
			rs.close();
		} catch (SQLException e) {
			System.out.println("数据库关闭2出问题啦");
		}
	}
}

  

 

posted @ 2016-12-23 18:18  老牛大讲堂  阅读(435)  评论(0编辑  收藏  举报