一、编写或准备前端页面
login.jsp页面放在webapp根目录
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>系统登录 - 超市订单管理系统</title>
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath }/statics/css/style.css" />
<script type="text/javascript">
/* if(top.location!=self.location){
top.location=self.location;
} */x
</script>
</head>
<body class="login_bg">
<section class="loginBox">
<header class="loginHeader">
<h1>超市订单管理系统</h1>
</header>
<section class="loginCont">
<form class="loginForm" action="${pageContext.request.contextPath }/user/dologin.html" name="actionForm" id="actionForm" method="post" >
<div class="info">${error }</div>
<div class="inputbox">
<label>用户名:</label>
<input type="text" class="input-text" id="userCode" name="userCode" placeholder="请输入用户名" required/>
</div>
<div class="inputbox">
<label>密码:</label>
<input type="password" id="userPassword" name="userPassword" placeholder="请输入密码" required/>
</div>
<div class="subBtn">
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</div>
</form>
</section>
</section>
</body>
</html>
并在web.xml中设置欢迎页
<!-- 设置欢迎页-->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
可以启动tomcat 验证一下默认是否能转到设置的欢迎页。如下截图,说明是成功的。
二、编写dao层用户登录接口及接口实现
UserDao.class 类
package com.zhang.dao.user;
import com.zhang.pojo.user;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author zhanghengchao
* @created 2021-08-28-7:31
*/
public interface UserDao {
//得到要登录的用户
public user getLoginUser(Connection connection, String userCode) throws SQLException;
}
UserDaoImpl.class
package com.zhang.dao.user;
import com.zhang.dao.BaseDao;
import com.zhang.pojo.user;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author zhanghengchao
* @created 2021-08-28-7:34
*/
public class UserDaoImpl implements UserDao {
// 得到要登录用户
@Override
public user getLoginUser(Connection connection, String userCode) throws SQLException {
PreparedStatement pstm = null;
ResultSet rs = null;
user user = null;
if (connection != null) {
String sql = "select * from smbms_user where userCode = ?";
Object[] params = {userCode};
rs = BaseDao.execute(connection, pstm, rs, sql, params);
if (rs.next()) {
user = new user();
user.setId(rs.getInt("id"));
user.setUserCode(rs.getString("userCode"));
user.setUserName(rs.getString("userName"));
user.setUserPassword(rs.getString("setUserPassword"));
user.setGender(rs.getInt("gender"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setUserRole(rs.getString("role"));
user.setCreatedBy(rs.getString("createdBy"));
user.setCreatedAt(rs.getDate("createdAt"));
user.setModifiedBy(rs.getString("modifiedBy"));
user.setModifiedAt(rs.getDate("modifiedAt"));
}
BaseDao.closeResource(null, pstm, rs);
}
return user;
}
}
三、编写Service业务层登录功能及接口
业务层
package com.zhang.service.user;
import com.zhang.pojo.user;
/**
* @author zhanghengchao
* @created 2021-08-28-9:06
*/
public interface UserService {
//用户登录
public user login(String userCode,String passWord);
}
业务层接口实现
package com.zhang.service.user;
import com.zhang.dao.BaseDao;
import com.zhang.dao.user.UserDao;
import com.zhang.dao.user.UserDaoImpl;
import com.zhang.pojo.user;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author zhanghengchao
* @created 2021-08-28-9:07
*/
public class UserServiceImpl implements UserService{
//业务层均会调用dao层,所以需要引用Dao层
private UserDao userDao;
public UserServiceImpl(){
userDao = new UserDaoImpl();
}
@Override
public user login(String userCode, String passWord) {
Connection connection = null;
user user = null;
try {
connection = BaseDao.getConnection();
//通过业务层调用对应的具体的数据库操作
user = userDao.getLoginUser(connection, userCode);
} catch (SQLException e) {
e.printStackTrace();
}finally {
BaseDao.closeResource(connection,null,null);
}
return user;
}
@Test
public void test(){
UserServiceImpl userService = new UserServiceImpl();
user admin = userService.login("admin", "123456");
System.out.println(admin.getUserPassword());
}
}
四、Servlet实现与注册
- LoginServlet实现
package com.zhang.servlet.user;
import com.sun.javafx.image.BytePixelSetter;
import com.zhang.pojo.user;
import com.zhang.service.user.UserService;
import com.zhang.service.user.UserServiceImpl;
import com.zhang.util.Constants;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author zhanghengchao
* @created 2021-09-01-22:47
*/
public class LoginServlet extends HttpServlet {
//Servlet 控制层调用业务层代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入了Servlet---------------Start");
//获取前端的用户和密码
String userCode = req.getParameter("userCode");
String userPassword = req.getParameter("userPassword");
//和数据库中的密码进行对比,调用业务层;
UserService userService = new UserServiceImpl();
user user = userService.login(userCode, userPassword); //这一步已经将登录人查到了
if(user != null){ //查有此人可以登录
// 将用户的信息放到session中,以便以后继续使用
req.getSession().setAttribute(Constants.USER_SESSION,user);
//跳转到内部主页
resp.sendRedirect("jsp/frame.jsp");
} else{ // 查无此人,无法登录,转回登录页面,提示用户
req.setAttribute("error","用户名或密码不正确");
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- Servlet注册
<!-- 注册Servlet-->
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.zhang.servlet.user.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>