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出问题啦");
}
}
}

浙公网安备 33010602011771号