此篇文章,講解接口的編寫,前面的配置,和數據庫那些,沒有操作好的,請看我上一篇,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,最有價值意義的接口創作了,絕不含糊,不信,你看看之後,可能會感激與我,但還是貢獻出來給大家吧,下期見喲!~~