简单的登录

在原有的注册界面上将index.jsp 进行复制 到web 名字改为Userlogin.jsp

<%--
Created by IntelliJ IDEA.
User: love
Date: 2020/1/16
Time: 12:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<h2>用户登录</h2>
<center>
<%-- form 形成 action 作为 pageContext 页面上下文 request 请求 contextPath 上下文路径 method 方法 post 发布,邮寄--%>
<form action="${pageContext.request.contextPath}/userLoginServlet" method="post">
<%-- table 表格 border 边界 1像素 width 宽 438 像素--%>
<table border="1px" width="438px">
<%-- tr 行 align 对齐 center 中心--%>
<tr align="center">
<%-- td 表的单元--%>
<td>账号</td>
<td>
<%-- input 输入 type 类型 name 名字--%>
<input type="text" name="username">
</td>
</tr>
<tr align="center">
<td>密码</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr align="center">
<%-- colspan 文字夸的行数--%>
<td colspan="2">
<%-- submit 提交--%>
<input type="submit" value="快速登录">
</td>
</tr>
</table>
</form> </center> </body>
</html>
2.创建userLoginServlet类
package cn.javabs.servlet;

import cn.javabs.dao.UserDao;
import cn.javabs.entity.User;

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 java.io.IOException;

@WebServlet("/userLoginServlet")
public class UserLoginServlet extends HttpServlet {
UserDao userDao = new UserDao();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userDao.userLogin(username, password);
// user 不等于 空 表示有东西
if(user != null){
request.setAttribute("user",user);
// 去下面 页面显示 main.jsp
request.getRequestDispatcher("/main.jsp").forward(request,response);
}else {
// 将提示语 存放在 记号 记号名称message
request.setAttribute("message","sorry,登录失败");
// 去下面 message页面显示
request.getRequestDispatcher("/message.jsp").forward(request,response);
}
}
}
3.创建UserDao类
package cn.javabs.dao;

import cn.javabs.entity.User;
import cn.javabs.util.DbcpUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class UserDao {
QueryRunner qr = new QueryRunner(DbcpUtils.getDataSource());

public User userLogin(String username, String password) {
try {
return qr.query("select*from users where username=? and password = ?", new BeanHandler<User>(User.class),username,password);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}


/**
* 用户注册
* @param username 是 用户
* @param password 是 密码
* @return 是一个整数 数字 因为返回一个int
*/

public int userRegister(String username, String password) {
try {
return qr.update("insert into users(username,password) values(?,?)",username,password);
} catch (SQLException e) {
// 转化为 运行时异常 运行Run time时间 Exception 异常
throw new RuntimeException(e);
}
}
}
4.创建User 实体类
package cn.javabs.entity;

/**
* entity 实体包
* User 实体类
* 实体: 实实在在的个体
*/
public class User {
private int id;
private String username;
private String password;
// 按快键 alt + insert 选择get和set方法
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

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;
}
}
5.创建UserLOgout类
package cn.javabs.servlet;

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 java.io.IOException;

@WebServlet("/userLogoutServlet")
public class UserLogoutServlet 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 {
request.getSession().removeAttribute("user");
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
}
6.创建main页面
<%--
Created by IntelliJ IDEA.
User: love
Date: 2020/1/21
Time: 16:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功的主页</title>
</head>
<body>
${sessionScope.user.username},您终于来了
如果厌倦,请戳我<a href="${pageContext.request.contextPath}/userLogoutServlet">离开</a>
</body>
</html>
创建index.jsp界面
<%--
Created by IntelliJ IDEA.
User: love
Date: 2020/1/16
Time: 12:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>

<title>用户登录</title>
</head>
<body>
<a href="login.jsp">已有账号,请移步...</a>
<center>

<%-- form 形成 action 作为 pageContext 页面上下文 request 请求 contextPath 上下文路径 method 方法 post 发布,邮寄--%>
<form action="${pageContext.request.contextPath}/userServlet" method="post">
<%-- table 表格 border 边界 1像素 width 宽 438 像素--%>
<table border="1px" width="438px">
<%-- tr 行 align 对齐 center 中心--%>
<tr align="center">
<%-- td 表的单元--%>
<td>账号</td>
<td>
<%-- input 输入 type 类型 name 名字--%>
<input type="text" name="username">
</td>
</tr>
<tr align="center">
<td>密码</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr align="center">
<%-- colspan 文字夸的行数--%>
<td colspan="2">
<%-- submit 提交--%>
<input type="submit" value="注册">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
7.创建util类
package cn.javabs.util;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/*
ctrl+ Alt + 空格 是代码提醒
*/
public class DbcpUtils {
public static DataSource dataSource;
static {
InputStream resourceAsStream = DbcpUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties p = new Properties();

try {
p.load(resourceAsStream);
// Basic 基础 DataSource 数据源 Factory 工厂
dataSource = BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

jdbc.properties类

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///usermanager
username=root
password=root
posted @ 2020-05-20 20:13  加燕  阅读(187)  评论(0)    收藏  举报