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