JavaWeb--Sevrlet史上最全編寫JSON(三)

此篇文章,講解接口的編寫,前面的配置,和數據庫那些,沒有操作好的,請看我上一篇,JavaWeb–Sevrlet史上最全編寫JSON(二)

一:寫一個bean文件,存放類的表名;(UserBean)

public class UserBean {
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmial() {
		return emial;
	}
	public void setEmial(String emial) {
		this.emial = emial;
	}
	public String getHobby() {
		return hobby;
	}
	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	private String username; //用戶名
	private String password;  //密碼
	private int age;   //年齡
	private String sex; //行別
	private String phone; //電話號碼
	private String emial; //郵箱
	private String hobby; //興趣愛好
	private int userid; //用戶id
}

二:配置數據庫的鏈接,加載的相關代碼(MySqlDbManager)

public class MySqlDbManager {
	private static final String URL = "jdbc:mysql://localhost:3306/(數據庫名)?useUnicode=true&characterEncoding=UTF-8";
	
    private static final String USER = "root";
    private static final String PASSWORD = "..。。。。。";
 
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("加載Mysql數據庫驅動失敗!");
        }
    }
 
    /**
     * 獲取Connection
     * 
     * @return
     * @throws SQLException
     * @throws ClassNotFoundException
     */
    public static Connection getConnection() throws SQLException {
       Connection conn = null;
        try {
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException e) {
            System.out.println("獲取數據庫連接失敗!");
            throw e;
        }
        return conn;
    }
     
    /**
     * 關閉ResultSet
     * @param rs
     */
    public static void closeResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }
    }

三:創建接口類,sevelat的http請求接口。(JsonServlet)

public class JsonServlet extends HttpServlet{
	private String jsonString;
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		doPost(request, response);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		jsonString = "Error!";
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter outss = response.getWriter();
		String contextPath = request.getContextPath();    

        String 	actionString = request.getParameter("action");
        if(actionString.equals("loginUser")){
        	String username =new String(request.getParameter("username").getBytes("UTF-8"), "UTF-8");
        	String password =new String(request.getParameter("password").getBytes("UTF-8"), "UTF-8");
        	jsonString = LoginUser( username, password);//這裏傳遞username,password
        }
}
	/**
	 * 用戶登錄
	 */
	private String LoginUser(String username,String password){
		return UserBeanHelp.SelectUserBean(username, password);
	}

四:創建UserBeanHelp類

public class UserBeanHelp {
	//private HttpServletRequest request;
	//private HttpServletResponse response;
	private static int code;
	private static UserBeanUtil ubu;
	private static String jsonString;
	private static List<UserBean> list = new ArrayList<>();
	private final static int SUCCESS = 0x200; //成功
	private final static int ERROR = 0x001;  //失敗
	private static UserBeanJson ubj;
	
	public static String SelectUserBean(String username,String password){
		try{
			ubu = new UserBeanUtil();
			ubj = new UserBeanJson();
			list = ubu.getUserBean(username, password);//這個是進入數據庫的查詢,返回list數據
			
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		if(list.size()>0){
			code = SUCCESS;
			jsonString = ubj.SelectUserBean(list,code);
		
		}else{
			code = ERROR;
			jsonString = ubj.SelectUserBean(list,code);
		}
		return jsonString;
		
	}
	}

五:創建UserBeanUtil類

public class UserBeanUtil implements UserDao{

	/**
	 * 用戶登錄接口
	 */
	@Override
	public List<UserBean> getUserBean(String username, String password) throws SQLException {
		List<UserBean> list = new ArrayList<UserBean>();
		String sql="select * from tb_user where username="+"'"+username+"'"+" and password="+"'"+password+"'";
		try {
			Connection conn = MySqlDbManager.getConnection();
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			
			while (rs.next()) {
				UserBean ub = new UserBean();
				ub.setUserid(rs.getInt("id"));
				ub.setUsername(rs.getString("username"));
				ub.setPassword(rs.getString("password"));
				ub.setAge(rs.getInt("age"));
				ub.setSex(rs.getString("sex"));
				ub.setPhone(rs.getString("phone"));
				ub.setEmial(rs.getString("emial"));
				ub.setHobby(rs.getString("hobby"));
				list.add(ub);
				
			}
			MySqlDbManager.closeConnection(rs, stmt, conn);
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}
import java.sql.SQLException;
import java.util.List;

import com.hs.bean.UserBean;


public interface UserDao {
	/**
	 * 獲取當前用戶的信息列表
	 * @param username
	 * @param password
	 * @return
	 * @throws SQLException
	 */
	public List<UserBean> getUserBean(String username,String password) throws SQLException;
	
    
    /** 
     * 查詢數據庫中是否有對應的UserName,如果有,返回對應id,沒有,返回0 
     *  
     * @param connection 
     * @param userName 
     * @return 
     */  
    public int queryUserName(String userName) throws SQLException;  
}

查詢到了數據,會返回數據到list裏面,因此,首先看這數據庫的配置,鏈接,初始化是否成功了,不然後面的也是白塔。

if(list.size()>0){
			code = SUCCESS;
			jsonString = ubj.SelectUserBean(list,code);
		
		}else{
			code = ERROR;
			jsonString = ubj.SelectUserBean(list,code);
		}
		return jsonString;

這裏就是返回數據庫裏的信息,到這裏來進行判斷,然後轉換爲json的數據格式,進行在接口上展示,是對象還是數組等;

六:創建UserBeanJson類,實現UserBeanTool方法

public class UserBeanJson implements UserBeanTool{
	//成功和失敗的 狀態
	private final static int SUCCESS = 0x200;
	private final static int ERROR = 0x001;
	//private final static int LIKE=0x300;
	//private static String message = "Error";
	private final static String SUCCESSCODE = "success";
	private final static String ERRORCODE = "error";
	private final static String LIKECODE = "用戶被註冊";
	/**
	 * 查詢數據
	 */
	@Override
	public String SelectUserBean(Object value, int code) {
		JSONObject jsonObject=new JSONObject();
		if(code == SUCCESS){
			jsonObject.put("code", "200");
			jsonObject.put("message", SUCCESSCODE);
		}else if(code == ERROR){
			jsonObject.put("code", "0");
			jsonObject.put("message", ERRORCODE);
		}
		jsonObject.put("user", value);
		return jsonObject.toString();
	}
	}
public interface UserBeanTool {
	
	/**
	 * 查詢數據接口
	 * @param value
	 * @param code
	 * @return
	 */
	public String SelectUserBean(Object value,int code);
	
	/**
	 * 插入數據接口
	 * @param value
	 * @param code
	 * @return
	 */
	public String InsertUserBean(Object value,int code); 
}

七,返回的jsonObject就會在sevelat登陸的post裏,看到數組信息,所有的也就這些了。沒有其他的了,跟着我的一步步來,絕對是可以的,網上很多sevelat接口這塊很多坑,不是這裏問題,就是那裏問題。

記住,如果你在開發json中,有什麼問題或者不懂的,可以諮詢我,我看到會及時回覆的,會盡最大的努力幫助到大家,讓更多的人,少走些彎路。

在這裏插入圖片描述
可以點擊這個進行測試了。之前鏈接上tomcat的,我們就根據自己的版本,8.0或者9.0進行運行,看看程序的接口如何,我這裏是8.5的tomcat;
在這裏插入圖片描述
八:最終的結果,所有的心酸,和遇到的坑,都歸根於此,終於實現了。
在這裏插入圖片描述

總結:

1,千萬要注意mysql數據庫鏈接的配置,得根據jar版本配置,如果jar包是8.0之前的就用官方有列子,是8.0或以後的版本,就是按照我上面那個數據庫類鏈接/初始化,這是官方的java鏈接mysql:https://www.runoob.com/java/java-mysql-connect.html
在這裏插入圖片描述
2,如果報錯404,一般是路徑的原因導致,以及web.xml文件的配置路徑,或者檢查下tomcat的運行配置,但可以根據下面那個報錯英文的信息,百度找找看;

3,如果報錯的500,這個原因導致的涉及太多,因爲我也不清楚你那個錯誤代碼是什麼,但這個也容易解決,網上也有很多關於500錯誤的解決方法,可以慢慢嘗試下,也闡述了很多方法。
在這裏插入圖片描述

不妨你可以看看,有什麼疑問可以問我的哦,不喜勿噴,還會繼續發佈更深刻的文章,每天創新一點點,學習一大步。若有幫助,可以點個贊哦。

DEMO下載地址(登陸與註冊接口)

上面這個demo,寫了登陸接口,註冊接口,還有列表接口;
下面這個就只有註冊接口,但下面這個demo對初學者,更容易理解深入,因此就一個接口,代碼量也就只有那麼多,可以根據自己意向去進行選擇,希望可以幫助到各位看…

純註冊接口JSON,代碼更簡潔

最後給個完整的DEMO吧,不然你們也很難看明白,這個是非常清晰的demo,最有價值意義的接口創作了,絕不含糊,不信,你看看之後,可能會感激與我,但還是貢獻出來給大家吧,下期見喲!~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章