基于mvc设计模式实现用户登录操作
知识点补充:mvc理论知识
应用实例:创建一个jsp页面login,将其表单数据发送到类LoginServlet中,在该类调用类LoginDao实现用户登录操作。
若登录成功则跳转到welcome.jap,否则跳回login.jsp
项目目录结构图
1.创建好需要用到的数据库与数据表
create database test;
use test;
drop table if exists login;
create table login(
l_id int not null primary key,
l_name varchar(20),
l_pwd varchar(20)
)
insert into login (l_id,l_name,l_pwd) values(1,'小尘','123abc');
select * from login;
select count(*) from login where l_name='小尘' and l_pwd='123abc';

2.导入相关数据库驱动包到目录WebContent/WEB-INF/lib下,选中该驱动包:右键build path—>add build path
3.在WebContent目录下创建login.jsp和welcome.jsp页面
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="LoginServlet" method="post">
用户名:<input type="text" name="uname"><br>
密码:<input type="password" name="upwd"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
登录成功!!!
</body>
</html>
4.创建com.xiaochen.entity包,在该包内创建类Login
Login.java
package com.xiaochen.entity;
public class Login {
private int id;
private String name;
private String pwd;
public Login() {
}
public Login( String name, String pwd) {
super();
this.name = name;
this.pwd = pwd;
}
public Login(int id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
5.创建com.xiaochen.dao包,在该包内创建类LoginDao
LoginDao.java
package com.xiaochen.dao;
import java.sql.*;
import com.xiaochen.entity.Login;
public class LoginDao {
//return 1:登录成功
//return 0:登录失败
//return -1:系统异常
public static int login(Login login) {
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
int count=-1;
String DRIVER="com.mysql.jdbc.Driver";
String URL="jdbc:mysql://localhost:3306/test";
String NAME="root";
String PWD="123abc";
try {
//加载具体的驱动类
Class.forName(DRIVER);
//连接数据库
con=DriverManager.getConnection(URL,NAME,PWD);
//获取数据操作数据库对象
String sql="select count(*) from login where l_name=? and l_pwd=?";
//操作数据库
pstmt=con.prepareStatement(sql);
//从实体类获取名字与密码,将其值赋予sql语句的占位符
pstmt.setString(1, login.getName());
pstmt.setString(2, login.getPwd());
//返回结果
rs=pstmt.executeQuery();
while(rs.next()!=false) {
//若查询成功则表示登录成功,将其值赋予result
count=rs.getInt(1);
}
if(count>0)//登录成功
return 1;
else //登录失败
return 0;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return -1;
} catch (SQLException e) {
e.printStackTrace();
return -1;
}catch (Exception e) {
e.printStackTrace();
return -1;
}finally {
try {
//关闭jdbc三幻神
if(rs!=null) rs.close();
if(pstmt!=null) pstmt.close();
if(con!=null) con.close();
} catch (SQLException e) {
e.printStackTrace();
return -1;
}
}
}
}
6.创建com.xiaochen.controller包,在该包内创建类LoginServlet
LoginServlet.java
package com.xiaochen.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xiaochen.dao.LoginDao;
import com.xiaochen.entity.Login;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
//设置编码格式
request.setCharacterEncoding("utf-8");
//获取login.jsp传来的用户名与密码
String name=request.getParameter("uname");
String pwd=request.getParameter("upwd");
//将这两个数据封装到实体类Login
Login login=new Login(name,pwd);
//将封装后的数据传到LoginDao使用
int result=LoginDao.login(login);
//登录成功,跳转到welcome.jsp页面
if(result>0) {
response.sendRedirect("welcome.jsp");
}
//登录失败,跳回登录页面重新登录
else {
response.sendRedirect("login.jsp");
}
}
}
运行结果图

版权声明:本文为weixin_45873215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。