登录流程图
1.编写前端页面
2.设置欢迎页
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
css无法显示问题
<%-- css无法显示问题 补充css显示问题:看是否自己在过滤器那里写上了response.setcontenttype(“text/html;utf-8”), 如果写上了login.jsp页面加载的时候css就会无效,因为这里需要的是html/css, 就得在过滤器哪里把上面的话注释掉;还有一种方案是将JSP页面的 <!DOCTYPE html>注释掉可以正常显示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; /** * @author mypc */ 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.测试访问并看是否报错