<%-- Document : login Created on : 2020-4-12, 16:50:16 Author : Administrator --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> 用户登录 </title> </head> <body> <!-- 输出出错提示 --> <span style="color:red;font-weight:bold"> <% if (request.getAttribute("err") != null) { out.println(request.getAttribute("err") + "<br/>"); } %> </span> 请输入用户名和密码: <!-- 登录表单,该表单提交到一个Servlet --> <form id="login" method="post" action="login"> 用户名:<input type="text" name="username"/><br/> 密  码:<input type="password" name="pass"/><br/> <input type="submit" value="登录"/><br/> </form> </body> </html>
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DbDao { private Connection conn; private String driver; private String url; private String username; private String pass; public DbDao() { } public DbDao(String driver, String url, String username, String pass) { this.driver = driver; this.url = url; this.username = username; this.pass = pass; } public void setDriver(String driver) { this.driver = driver; } public void setUrl(String url) { this.url = url; } public void setUsername(String username) { this.username = username; } public void setPass(String pass) { this.pass = pass; } public String getDriver() { return this.driver; } public String getUrl() { return this.url; } public String getUsername() { return this.username; } public String getPass() { return this.pass; } //连接数据库 public Connection getConnection() throws Exception { if (this.conn == null) { Class.forName(this.driver); this.conn = DriverManager.getConnection(this.url, this.username, this.pass); } return this.conn; } // 插入记录 public boolean insert(String sql, Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length; i++) { pstmt.setObject(i + 1, args[i]); } if (pstmt.executeUpdate() != 1) { return false; } pstmt.close(); return true; } // 执行查询 public ResultSet query(String sql, Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length; i++) { pstmt.setObject(i + 1, args[i]); } return pstmt.executeQuery(); } // 执行修改 public void modify(String sql, Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length; i++) { pstmt.setObject(i + 1, args[i]); } pstmt.executeUpdate(); pstmt.close(); } // 关闭数据库连接的方法 public void closeConn() throws Exception { if (conn != null && !conn.isClosed()) { conn.close(); } } }
drop database if exists liuyan; create database liuyan; use liuyan; create table user_inf ( id int auto_increment primary key, name varchar(255), pass varchar(255) ); insert into user_inf values(null,'crazyit','123'); insert into user_inf values(null,'tiger','123');
<%-- Document : welcome Created on : 2020-4-12, 17:30:59 Author : Administrator --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> 欢迎页面 </title> </head> <body> <h3>欢迎登录</h3> <%=session.getAttribute("name")%>,欢迎登录! </body> </html>
import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.PrintWriter; import java.io.IOException; import java.sql.*; /** * * @author Administrator */ @WebServlet(name = "login", urlPatterns = {"/login"}) public class LoginServlet extends HttpServlet { // 响应客户端请求的方法 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { String errMsg = ""; // Servlet本身并不输出响应到客户端,因此必须将请求转发到视图页面 RequestDispatcher rd; // 获取请求参数 String username = request.getParameter("username"); String pass = request.getParameter("pass"); try { // Servlet本身并不执行任何的业务逻辑处理,它调用JavaBean处理用户请求 DbDao dd = new DbDao("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/liuyan", "root", "admin"); // 查询结果集 ResultSet rs = dd.query("select pass from user_inf" + " where name = ?", username); if (rs.next()) { // 用户名和密码匹配 if (rs.getString("pass").equals(pass)) { // 获取session对象 HttpSession session = request.getSession(true); // 设置session属性,跟踪用户会话状态 session.setAttribute("name", username); // 获取转发对象 rd = request.getRequestDispatcher("/welcome.jsp"); // 转发请求 rd.forward(request, response); } else { // 用户名和密码不匹配时 errMsg += "您的用户名密码不符合,请重新输入"; } } else { // 用户名不存在时 errMsg += "您的用户名不存在,请先注册"; } } catch (Exception e) { e.printStackTrace(); } // 如果出错,转发到重新登录 if (errMsg != null && !errMsg.equals("")) { rd = request.getRequestDispatcher("/login.jsp"); request.setAttribute("err", errMsg); rd.forward(request, response); } } }
<servlet> <!-- 指定Servlet的名字, 相当于指定@WebServlet的name属性 --> <servlet-name>login</servlet-name> <!-- 指定Servlet的实现类 --> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <!-- 指定Servlet的名字 --> <servlet-name>login</servlet-name> <!-- 指定Servlet映射的URL地址, 相当于指定@WebServlet的urlPatterns属性--> <url-pattern>/login</url-pattern> </servlet-mapping>