登录流程图
1.编写前端页面
2.设置欢迎页
css无法显示问题
<%-- css无法显示问题 补充css显示问题:看是否自己在过滤器那里写上了response.setcontenttype(“text/html;utf-8”), 如果写上了login.jsp页面加载的时候css就会无效,因为这里需要的是html/css, 就得在过滤器哪里把上面的话注释掉;还有一种方案是将JSP页面的 注释掉可以正常显示css样式 --%>
3.编写dao层登录的接口
public interface UserDao {
//得到要登录的用户
public User getLoginUser(Connection connection, String userCode) throws SQLException;
}
4.编写dao接口的实现类
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=?";
//疑惑为什么这样赋值{userCode}
Object[] params = {userCode};
rs = BaseDao.excute(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("userPassword"));
user.setGender(rs.getInt("gender"));
user.setBirthday(rs.getDate("birthday"));
user.setPhone(rs.getString("phone"));
user.setAddress(rs.getString("address"));
user.setUserRole(rs.getInt("userRole"));
user.setCreatedBy(rs.getInt("createBy"));
user.setCreationDate(rs.getTimestamp("creationDate"));
user.setModifyBy(rs.getInt("modifyBy"));
user.setModifyDate(rs.getTimestamp("modifyDate"));
}
BaseDao.closeResource(null,pstm,rs);
}
return user;
}
}
5.业务层接口
package com.sqt.service.user;
import com.sqt.pojo.User;
public interface UserService {
//用户登录
public User login(String userCode, String password);
}
6.业务层实现类
package com.sqt.service.user;
import com.sqt.dao.BaseDao;
import com.sqt.dao.user.UserDao;
import com.sqt.dao.user.UserDaoImpl;
import com.sqt.pojo.User;
import org.junit.Test;
import java.sql.Connection;
import java.sql.SQLException;
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 (Exception e) {
e.printStackTrace();
}finally {
BaseDao.closeResource(connection,null,null);
}
return user;
}
//测试输出数据,看业务是否有问题
// @Test
// public void test(){
// UserServiceImpl userService = new UserServiceImpl();
// User admin = userService.login("admin", "111111");
// System.out.println(admin.getUserPassword());
// }
}
8.编写servlet,配置web.xml文件
package com.sqt.servlet.user;
import com.sqt.pojo.User;
import com.sqt.service.user.UserServiceImpl;
import com.sqt.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;
public class LoginServlet extends HttpServlet {
//Servelt :控制层,调用业务层的代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("LoginServlet------start-----");
//获取用户名和密码
String userCode = req.getParameter("userCode");
String userPassword = req.getParameter("userPassword");
//和数据库中的密码作对比,调用业务层
UserServiceImpl 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);
}
}
9.测试访问并看是否报错



