servlet層中的UserLoginServlet.java
package com.mhys.servlet; /*** ClassName: ${NAME}* Description:** @Author 數開_11* @Create 2024-05-29 20:32* @Version 1.0*/import com.mhys.pojo.User;
import com.mhys.service.UserService;
import com.mhys.service.impl.UserServiceImpl;import javax.naming.Name;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.lang.annotation.Repeatable;
import com.mhys.servlet.UserLoginServlet;
@WebServlet(name = "UserLoginServlet",value = "/UserLoginServlet")
public class UserLoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String name = request.getParameter("name");String pwd = request.getParameter("pwd");// 創建userServletUserService service = new UserServiceImpl();User user = service.findByNameAndPassword(name, pwd);if (user != null) {request.getRequestDispatcher("/index.jsp").forward(request, response);
// response.sendRedirect("/login.jsp");} else {request.setAttribute("msg", "user/pwd錯誤哦");request.getRequestDispatcher("/login.jsp").forward(request, response);
// response.sendRedirect("login.jsp");}}
}
創建servlet映射對應到頁面表單的跳轉
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><style>.centered-element{margin: 300px auto ;width: 200px;display: block;}</style><meta charset="UTF-8" ><title>HadoopWebLogin</title>
</head>
<body><form action="/UserLoginServlet" class="centered-element">
<%-- 使用外部css來居中這個table--%><table class="centered-element">
<%-- caption標簽定義了表格的標題--%><caption>用戶登錄</caption>
<%-- tr標簽表示的時表格的row--%><tr>
<%-- td標簽表示的是單元格cell--%><td>賬戶:</td>
<%-- input標簽是一個輸入的控件--%><td><input type="text" name="name"></td></tr><tr><td> 密碼: </td><td><input type="text" name="pwd"></td></tr><tr><td><input type="submit" value="登錄"></td><td><input type="reset" value="重置"></td></tr>
<%-- 從request域中拿info--%><tr><td colspan="2"><span style="color: red;">${msg}</span></td></tr></table></form></body>
</html>
submit之后去找servlet層中的UserLoginServlet.java 進行邏輯判斷---> 重定向操作
注!: 這里必須要在web.xml中配置上!!!!!(我是在這里犯錯了,U小寫了,找了半天沒看出了,笑暈)
<servlet> <servlet-name>UserLoginServlet</servlet-name><servlet-class>com.mhys.servlet.UserLoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserLoginServlet</servlet-name><url-pattern>/UserLoginServlet</url-pattern></servlet-mapping>
這里的webservlet中的路徑是嚴格區分大小寫的,寫錯小個小點都會在登錄時重定向報404找不到資源!!!!
另一個注意點:就是創建對象獲取數據庫中的user/pwd時new 數據類型是UserService 父類
不要是接口的實現類
?utils 層中的JDBCUtils.java
package com.mhys.util;import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;/*** ClassName: JdbcUtils* Description:** @Author 數開_11* @Create 2024-05-29 17:46* @Version 1.0*/
public class JdbcUtils {public static Connection getConnection() throws Exception{Connection connection=null;try{//1-讀取db.properties文件Properties properties=new Properties();InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");properties.load(in);//2-讀取屬性String driver=properties.getProperty("driver");String url=properties.getProperty("url");String username=properties.getProperty("username");String password=properties.getProperty("password");//3-注冊驅動Class.forName(driver);//4-獲取連接connection= DriverManager.getConnection(url,username,password);//5-日志打印連接信息System.out.println("連接信息: " + url + " " + username + " " + password);} catch (Exception e) {e.printStackTrace();throw new RuntimeException("數據庫連接失敗,請檢查連接參數是否正確!");}return connection;}
}
和項目的資源目錄下配置db.properties文件
內容:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:33306/javaweb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username=root
password=root