Java Enterprise ——登陆跳转 demo

1.创建项目
创建一个Java Enterprise项目
Java Enterprise ——登陆跳转 demo_第1张图片

2.点击next,填写项目名,最好不要使用默认的,最后点击finish,项目就创建完成。
Java Enterprise ——登陆跳转 demo_第2张图片
3.为方便理清逻辑,在src下建立一个packge,笔者命名com.lc,
在此packge下建立五个packge
Java Enterprise ——登陆跳转 demo_第3张图片
dao:与数据库有直接的操作
model:定义实体类
service:负责处理业务逻辑
servlet:拦截业务请求
util:工具类
注意:此处建立packge时会有一点小问题,如图一
Java Enterprise ——登陆跳转 demo_第4张图片
图一
此时直接建立另一个包,将名字中的model删掉
Java Enterprise ——登陆跳转 demo_第5张图片

4.考虑到要实现的demo要求,在web/WEB-INF下建立一个directory,取名libs
Java Enterprise ——登陆跳转 demo_第6张图片

5.在libs中添加两个jia包,添加后,右击jar包,选择“add as library”,使其可以展开
Java Enterprise ——登陆跳转 demo_第7张图片
Java Enterprise ——登陆跳转 demo_第8张图片

6.添加完毕后,打开file=》project structure,在artifacts里面可以看到添加成功的两个包,截图如下,若没有正常出现,界面下方会有信息提示,选择“Fix”,选择“add…to artifacts”即可
Java Enterprise ——登陆跳转 demo_第9张图片
7.首先编写数据库连接函数及关闭函数,此部分在util工具类中进行(此部分可参考笔者写的 “创建JDBC应用程序及其简易封装” 一文,网址:https://blog.csdn.net/lcscy/article/details/107468053):
Java Enterprise ——登陆跳转 demo_第10张图片

代码如下:

public class DBUtil {
    public static Connection getConnetion() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/dis?useSSL=false",
                "root","999");
         return connection;
    }
    public static void closeAll(ResultSet rs, Statement stat, Connection conn) throws SQLException {
        if(rs!=null)
            rs.close();

        if(stat!=null)
            stat.close();

        if(conn!=null)
            conn.close();


    }
}

8.Model目录下的实体类设计
对于我们所要实现的登陆界面来说,首先必要的就是user,每一个user都包括了id、name、password,age等基本属性,在设置时,设置其为私有,因此需要添加getter and setter函数,方便之后进行调用(可用快捷键进行添加,windows是alt+insert,macOS是command+N)

public class User {
    private String name;
    private int id;
    private String password;
    private String age;

    public void setName(String name) {
        this.name = name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAge() {
        return age;
    }

    public String getPassword() {
        return password;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", id=" + id +
                ", password='" + password + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}

9.因为要实现login功能,所以在dao中实现数据库操作,搜寻用户输入的用户名在数据库中是否存在,并比对密码是否正确(此处数据库操作也可参考笔者写的 “创建JDBC应用程序及其简易封装” 一文,网址:https://blog.csdn.net/lcscy/article/details/107468053))
Java Enterprise ——登陆跳转 demo_第11张图片
代码如下:

public class UserDao {
     public User selectByName(String name){
         ResultSet rs=null;
         Connection conn=null;
         PreparedStatement pstmt=null;
         DBUtil util=new DBUtil();
         User user = new User();
         try{
             conn = util.getConnetion();
             pstmt=conn.prepareStatement("select * from user where name = ?");
             pstmt.setString(1,name);
             rs=pstmt.executeQuery();
             while (rs.next()){
                 user.setId(rs.getInt("id"));
                 user.setName(rs.getString("name"));
                 user.setAge(rs.getString("age"));
                 user.setPassword(rs.getString("password"));
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally{
             try{
                 util.closeAll(rs,pstmt,conn);
             } catch (SQLException e) {
                 e.printStackTrace();
             }
         }
         return user;
     }

}

10.完成数据库操作后,就可以开始写业务逻辑部分了,在service处,创建UserService类
在这里插入图片描述
代码如下:

public class UserService {
    UserDao userDao=new UserDao();
    public User selectByName(String name){
        return userDao.selectByName(name);
    }
}

11.index.jsp中实现对界面进行简单的设计,包括了两个输入框,以及提交按钮:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>$Title$</title>
</head>
<body>
<h1>登录界面</h1>
<form action="/login" method="post">
  name:<input name="name" type="text">
  password:<input name="password" type="password">
  <input type="submit" value="登录">
</form>
</body>
</html>

12.在serlvet目录处,新建类LoginServlet,servlet有两种实现方式,笔者使用继承HttpServlet类,其中的数据,有界面传输过去
代码如下:

public class LoginServlet extends HttpServlet {

    UserService userService=new UserService();
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String name = req.getParameter("name");
        String password = req.getParameter("password");
        User user = userService.selectByName(name);
        if(password.equals(user.getPassword())){
            resp.getWriter().write("success");
            System.out.println("success");
        }else{
            resp.getWriter().write("failed");
            System.out.println("failed");
        }

    }
}

13.接下来配置web.xml,其中包括了请求路径

   <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.lc.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

完成后就可以运行了,会自动弹出登录界面,填写对应数据后点击登录即可
Java Enterprise ——登陆跳转 demo_第12张图片

Java Enterprise ——登陆跳转 demo_第13张图片

注意:在数据库的表中需要填上与dao中User类相应的列,否则数据库查询时会出问题。

你可能感兴趣的:(java,数据库,mysql)