超市订单系统--二登录功能

本文介绍了超市订单系统的登录功能实现过程,从编写前端页面、设置欢迎页开始,包括解决CSS显示问题,接着详细讲述了从DAO层接口到业务层接口及其实现,再到Servlet的编写和配置,最后进行功能测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

登录流程图

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.测试访问并看是否报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值