基於Servlet的MVC模式用戶登錄實例
阿新 • • 發佈:2019-04-25
dsta trac att 簡單 判斷 ping 分享 return jquery
關於MVC模式的簡單解釋
M Model,模型層,例如登錄實例中,用於處理登錄操作的類;
V View,視圖層,用於展示以及與用戶交互。使用html、js、css、jsp、jQuery等前端技術實現;
C Controller,控制器,接受視圖層的請求,將請求跳轉到對應的模型進行處理,模型層處理完畢後,再將結果返回給請求處。這裏用Servlet實現控制器。
實現過程分析
用戶再視圖層輸入用戶名以及密碼點擊提交,向控制器發出請求
控制器(Servlet)接受請求,將接受到的用戶名以及密碼轉給模型層
模型層依據用戶名和密碼在數據庫中進行查詢,將操作結果返回給控制器
控制器經過判斷返回給用戶登錄結果。
代碼實現
項目結構圖
視圖層實現(index.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Login</title> </head> <body> <form action="LoginServlet" method="post"> Name:<input type="text" name="uname"><br> Pass:<input type="password" name="upwd"><br> <input type="submit" value="Login"><br> </form> </body> </html>
控制器層實現(LoginServlet)
package com.ajy.Servlet; import com.ajy.Model.LoginDao; import com.ajy.Entity.User; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; //控制器層 public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //處理post方式登錄請求 request.setCharacterEncoding("utf-8"); String uname = request.getParameter("uname"); String upwd = request.getParameter("upwd"); User user = new User(uname,upwd); response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); int rs = LoginDao.Login(user); if(rs==-1){ out.println("系統錯誤"); }else if(rs==0){ out.println("用戶名或密碼錯誤"); }else{ out.println("登錄成功"); } } }
模型層實現(LoginDao)
package com.ajy.Model;
import com.ajy.Entity.User;
import java.sql.*;
//模型層,用於處理登錄操作
public class LoginDao {
private static String DBUname = "root";
private static String DBUpwd = "121181";
private static String URL="jdbc:mysql://localhost:3306/anjiyubase?&serverTimezone=UTC&useSSL=false";
public static int Login(User user){
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int count = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection(URL,DBUname,DBUpwd);
pstmt = con.prepareStatement("select count(*) from users where uanme = ? and upwd = ?");
pstmt.setString(1,user.getUserName());
pstmt.setString(2,user.getUserPassword());
rs = pstmt.executeQuery();
if(rs.next()){
count = rs.getInt(1);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return -1;
} catch (SQLException e) {
e.printStackTrace();
return -1;
}finally {
try {
if (rs!=null)rs.close();
if (pstmt!=null)pstmt.close();
if (con!=null)con.close();
} catch (SQLException e) {
e.printStackTrace();
return -1;
}
}
if (count==0){
return 0;
}else{
return 1;
}
}
}
用戶實例(User)
package com.ajy.Entity;
public class User {
private int id;
private String UserName;
private String UserPassword;
public User(String UserName, String UserPassword){
this.UserName=UserName;
this.UserPassword=UserPassword;
}
public User(int id, String UserName, String UserPassword){
this.id=id;
this.UserName=UserName;
this.UserPassword=UserPassword;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPassword() {
return UserPassword;
}
public void setUserPassword(String userPassword) {
UserPassword = userPassword;
}
}
web.xml中的內容
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.ajy.Servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
數據庫
基於Servlet的MVC模式用戶登錄實例