一个小的登录Demo,坑还是挺多的,比如post请求会乱码,包结构等
包结构
JavaBean:(User.java)
package javabean;
public class User {
private String username;
private String password;
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;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
Login.jsp
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2021/3/13
Time: 16:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/servlet/loginServlet" method="post">
<table>
<tr><td>用户名:</td><td><input type="text" name="username" /></td></tr>
<tr><td>密码:</td><td><input type="password" name="password" /></td></tr>
<tr><td colspan="2"><input type="submit" value="登录"/></td></tr>
<tr><td></td><td style="color: red">${errInfo}</td></tr>
</table>
</form>
</body>
</html>
LoginServlet
package servlet;
import javabean.User;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
@WebServlet("/servlet/loginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.setCharacterEncoding("UTF-8");//防止post乱码
String username = request.getParameter("username");
String password = request.getParameter("password");
User user=new User();
user.setUsername(username);
user.setPassword(password);
// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
final String DB_URL = "jdbc:mysql://localhost:3306/javaee?serverTimezone=UTC&characterEncoding=utf-8";
// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
//static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
// 数据库的用户名与密码,需要根据自己的设置
final String USER = "账号";
final String PASS = "密码";
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
stmt = conn.createStatement();
String sql;
sql = " SELECT * FROM user where username = '"+user.getUsername()+"' and password = '"+user.getPassword()+"'";
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()){ //查不到数据 sql执行false
String username2 = rs.getString("username");
String password2 = rs.getString("password");
System.out.println("查到了");
if(user.getUsername().equals(username2) && user.getPassword().equals(password2)){
User usertemp = new User();
usertemp.setUsername(username2);
request.setAttribute("usertemp", usertemp);
request.getRequestDispatcher("/main.jsp").forward(request, response);
}
}
else {
request.setAttribute("errInfo", "用户名或密码不正确!");
System.out.println("没查到");
request.getRequestDispatcher("/Login.jsp").forward(request, response);
//response.sendRedirect(request.getContextPath()+"/Login.jsp");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(Exception se){
// 处理 JDBC 错误
se.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}
catch (Exception se) {
se.printStackTrace();
}
}
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}
main.jsp
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2021/3/13
Time: 17:13
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录成功</title>
</head>
<body>
<h1>${usertemp.username},你好。欢迎登录系统!</h1>
</body>
</html>
数据表自己建个简单的就行,字段id,username,password啥的。
下一篇:添加了filter和listenermodel2的登录案例+Filter过滤未登录用户+Listener监听访问人数