15Easymall重构成javaee高级开发模

Posted xuwangqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15Easymall重构成javaee高级开发模相关的知识,希望对你有一定的参考价值。

1.创建EasyMallweb工程

2.导入原有页面

技术图片

3.导入原有静态资源

技术图片

4.导入所以jar包和配置文件

技术图片

技术图片

5.导入动态资源文件,并修改配置文件

技术图片

技术图片

6开发注册功能

regist.jsp  RegistServlet

a.修改RegistServlet

            //将数据发送至service层做逻辑处理,所以创建UserService类
                    UserService userService = new UserService();
                    //参数传递内容较多,可以封装在Javabean中,所以创建User类来封装数据
                    User user = new User(0,username,password,nickname,email);
                    try 
                            //把错误注册的信息,当做异常来处理,所以当前方法可以不添加返回值。
                            userService.registUser(user);
                     catch (MsgException e) 
                            //获取异常对象身上提供的异常信息,作为页面提示。
                            request.setAttribute("msg",e.getMessage());
                            request.getRequestDispatcher("/regist.jsp").forward(request, response);
                            return;
                    

b.创建UserService类

            package com.easymall.service;
            
            import com.easymall.dao.UserDao;
            import com.easymall.domain.User;
            import com.easymall.exception.MsgException;
            
            public class UserService 
                    //访问数据时要使用Dao层,所以创建UserDao类
                    public UserDao userDao = new UserDao();
                    
                    /**
                     * 注册用户
                     * @param user 用户信息
                     */
                    public void registUser(User user) 
                    //判断用户名是否存在
                    boolean flag =  userDao.findUserByUsername(user.getUsername());
                    if(flag)
                            //用户名存在
                            //创建自定义异常,作为通知,提示用户名已存在
                            throw new MsgException("用户名已存在");
                    else
                            //用户不存在
                            //添加一条数据
                            userDao.addUser(user);
                    
                    
            
            

c.创建异常类---MsgException

public class MsgException extends RuntimeException 
    public MsgException(String msg)
        super(msg);
    

d.创建JavaBean-User

            package com.easymall.domain;
            //封装用户信息的javabean
            public class User 
                    private int id;
                    private String username;
                    private String password;
                    private String nickname;
                    private String email;
                    
                    public User()
                            
                    
                    public User(int id, String username, String password, String nickname,
                            String email) 
                            super();
                            this.id = id;
                            this.username = username;
                            this.password = password;
                            this.nickname = nickname;
                            this.email = email;
                    
                    public int getId() 
                            return id;
                    
                    public void setId(int id) 
                            this.id = id;
                    
                    public String getUsername() 
                            return username;
                    
                    public void setUsername(String username) 
                            this.username = username;
                    
                    public String getPassword() 
                            return password;
                    
                    public void setPassword(String password) 
                            this.password = password;
                    
                    public String getNickname() 
                            return nickname;
                    
                    public void setNickname(String nickname) 
                            this.nickname = nickname;
                    
                    public String getEmail() 
                            return email;
                    
                    public void setEmail(String email) 
                            this.email = email;
                    
            

e,创建UserDao 添加addUser、findUserByUsername两个方法

            package com.easymall.dao;
            
            import java.sql.Connection;
            import java.sql.PreparedStatement;
            import java.sql.ResultSet;
            import java.sql.SQLException;
            
            import com.easymall.domain.User;
            import com.easymall.utils.JDBCUtils;
            
            public class UserDao 
            
                    /**
                     * 添加一条用户信息
                     * @param user 用户信息对象
                     * 
                     */
                    public void addUser(User user) 
                            Connection conn = null;
                            PreparedStatement ps = null;
                            try 
                                    conn = JDBCUtils.getConnection();
                                    ps = conn.prepareStatement("insert into user values(null,?,?,?,?)");
                                    ps.setString(1, user.getUsername());
                                    ps.setString(2,user.getPassword());
                                    ps.setString(3, user.getNickname());
                                    ps.setString(4, user.getEmail());
                                    ps.executeUpdate();
                             catch (SQLException e) 
                                    e.printStackTrace();
                            finally
                                    JDBCUtils.close(conn, ps, null);
                            
                            
                    
            
                    /**
                     * 根据用户名查询用户
                     * @param username 用户名
                     * @return 用户名是否存在的布尔值
                     */
                    public boolean findUserByUsername(String username) 
                            Connection conn = null;
                            PreparedStatement ps = null;
                            ResultSet rs = null;
                            try 
                                    conn = JDBCUtils.getConnection();
                                    ps = conn.prepareStatement("select * from user where username=?");
                                    ps.setString(1, username);
                                    rs = ps.executeQuery();
                                    if(rs.next())//为true则用户名已存在,不能注册
                                            return true;
                                    else//为false则用户名不存在,可以注册
                                            return false;
                                    
                             catch (SQLException e) 
                                    e.printStackTrace();
                                    throw new RuntimeException();
                            finally
                                    JDBCUtils.close(conn, ps, rs);
                            
                            
                    
            
            

7.开发登录功能

a.修改loginServlet

//传输数据到UserService
    UserService userService = new UserService();
    try 
        User user = userService.loginUser(username,password);
        //得到user对象,应该放入session域,保留登录状态
        request.getSession().setAttribute("user", user);
     catch (MsgException e) 
        //发生异常则证明,需要向前台页面输出错误提示信息。
        request.setAttribute("msg", e.getMessage());
        request.getRequestDispatcher("/login.jsp").forward(request, response);
        return;

b修改UserService 

/**
     * 登录功能
     * @param username 用户名
     * @param password 密码
     * @return 返回用户信息对象(放入session域时使用)
     */
    public User loginUser(String username, String password) 
        //查询到结果返回user
        //没有查询结果返回null
        User user = userDao.findUserByUsernameAndPassword(username,password);
        if(user == null)//用户名和密码不匹配,使用异常信息,作出提示
            throw new MsgException("用户名或密码不正确");
        else//用户名和密码匹配,返回user对象
            return user;
        
        

c.修改UserDao

            /**
                     * 根据用户名和密码查询用户
                     * @param username 用户名
                     * @param password 密码
                     * @return 用户信息对象或null
                     */
                    public User findUserByUsernameAndPassword(String username, String password) 
                            Connection conn = null;
                            PreparedStatement ps = null;
                            ResultSet rs = null;
                            try 
                                    conn = JDBCUtils.getConnection();
                                    ps = conn.prepareStatement("select * from user where username=? and password=?");
                                    ps.setString(1,username);
                                    ps.setString(2, password);
                                    rs = ps.executeQuery();
                                    if(rs.next())//判断为true,则证明用户名和密码正确,返回一个user对象
                                            User user = new User();
                                            user.setUsername(rs.getString("username"));
                                            user.setPassword(rs.getString("password"));
                                            user.setNickname(rs.getString("nickname"));
                                            user.setEmail(rs.getString("Email"));
                                            return user;
                                    else//判断为false,则证明用户名和密码不正确,返回null
                                            return null;
                                    
                             catch (SQLException e) 
                                    e.printStackTrace();
                                    throw new RuntimeException();
                            finally
                                    JDBCUtils.close(conn, ps, rs);
                            
                            
                    

d.

<c:if test="$sessionScope.user != null ">
    <a href="#">欢迎$sessionScope.user.username,回来</a>&nbsp;&nbsp;|&nbsp;&nbsp;
    <a href="$pageContext.request.contextPath/LogOutServlet">注销</a>
     </c:if>
<c:if test="$sessionScope.user ==null ">
    <a href="$pageContext.request.contextPath/login.jsp">登录</a>&nbsp;&nbsp;|&nbsp;&nbsp;
    <a href="$pageContext.request.contextPath/regist.jsp">注册</a>
    </c:if>

 

以上是关于15Easymall重构成javaee高级开发模的主要内容,如果未能解决你的问题,请参考以下文章

神操作!我把 3000 行代码重构成 15 行!

神操作!我把 3000 行代码重构成 15 行!

SSM项目之电商项目easymall

JavaEE详解

JavaEE

easymall项目的商品删除,前台商品分页,商品详情,购物车模块