java_web:基于mvc设计模式实现用户登录操作

基于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版权协议,转载请附上原文出处链接和本声明。