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 {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
// 创建userServlet
UserService 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