servlet登录注册

本文详细介绍了使用Java和MS SQL Server建立数据库连接,展示DbHelper类的使用,包括注册和登录功能,以及User类和UserManager工具类的操作。涉及数据库操作、ORM映射和基本的前端页面交互。
摘要由CSDN通过智能技术生成
package xyz.jrkang.util;
import java.sql.*;

public class DbHelper {
    // 1.加载驱动
    private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    private static String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=school";
    private static String user = "sa";
    private static String pwd = "123";
 
    // 2.获取连接
    public static Connection getConn() {
        Connection conn = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, pwd);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
 
    // 3.资源的关闭
    public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
        try {
            if (conn != null) {
                conn.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (rs != null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
 
    // 4.更新的调用
    public static int update(String sql, Object[] objs) {
        Connection conn = getConn();
        PreparedStatement ps = null;
        int count = 0;
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < objs.length; i++) {
                ps.setObject(i + 1, objs[i]);
            }
            count = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(conn, ps, null);
            return count;
        }
    }
}

bean(model)包
User代码
package xyz.jrkang.bean;

public class User {
    private Integer id;
    private String userName;
    private String pwd;
    private Integer age;
    private String sex;
 
    public Integer getId() {
        return id;
    }
 
    public void setId(Integer id) {
        this.id = id;
    }
 
    public String getUserName() {
        return userName;
    }
 
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public String getPwd() {
        return pwd;
    }
 
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    public String getSex() {
        return sex;
    }
 
    public void setSex(String sex) {
        this.sex = sex;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", pwd='" + pwd + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
 
    public User(Integer id, String userName, String pwd, Integer age, String sex) {
        this.id = id;
        this.userName = userName;
        this.pwd = pwd;
        this.age = age;
        this.sex = sex;
    }
 
    public User() {
        super();
    }
}

页面(.jsp文件)
login.jsp(登录页面)

<body>
<%
    String msg = (String) request.getAttribute("msg");
    if (msg == null)
        msg = "";
%>
<form action="login" method="post">
    <table border="1" cellpadding="0" cellspacing="0">
        <tr>
            <th colspan="2">登录页面</th>
        </tr>
        <tr>
            <td class="left">用户名</td>
            <td class="right"><input type="text" name="userName"/></td>
        </tr>
        <tr>
            <td class="left">密码</td>
            <td><input type="text" name="pwd"/></td>
        </tr>
        <tr>
            <td class="left" colspan="2"><input class="btn" type="submit" value="登录"/>
                <a href="reg.jsp"><input class="btn" type="button" value="注册"/></a>
            </td>
        </tr>
    </table>
</form>
<span style="color: red;"><%=msg %></span>
</body>
reg.jsp(注册页面)
<body>
<form action="reg" method="post">
    <table border="1" cellpadding="0" cellspacing="0">
        <tr>
            <th colspan="2">注册页面</th>
        </tr>
        <tr>
            <td class="left">用户名</td>
            <td class="right"><input type="text" name="userName"/></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="text" name="pwd"/></td>
        </tr>
        <tr>
            <td>确认密码</td>
            <td><input type="text" name="pwd"/></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="number" name="age"/></td>
        </tr>
        <tr>
            <td>性别</td>
            <td><input type="text" name="sex"/></td>
        </tr>
        <tr>
            <td colspan="2"><input class="btn" type="submit" value="注册"/>
                <a href="login.jsp"><input class="btn" type="button" value="登录"/></a>
            </td>
        </tr>
    </table>
</form>
</body>
userList.jsp(用户列表页)
<body>
<table border="1" cellpadding="0" cellspacing="0">
    <thead>
    <tr>
        <th class="id">编号</th>
        <th class="userName">用户名</th>
        <th class="pwd">密码</th>
        <th class="age">年龄</th>
        <th class="sex">性别</th>
    </tr>
    </thead>
    <%
        ArrayList<User> users = (ArrayList<User>) request.getAttribute("users");
        for (User user : users) {
    %>
    <tbody>
    <tr>
        <td><%=user.getId() %>
        </td>
        <td><%=user.getUserName() %>
        </td>
        <td><%=user.getPwd() %>
        </td>
        <td><%=user.getAge() %>
        </td>
        <td><%=user.getSex() %>
        </td>
    </tr>
    </tbody>
    <%
        }
    %>
</table>
<div class="login">
    <a href="login.jsp">返回登录页面</a>
</div>
<div class="reg">
    <a href="reg.jsp">返回注册页面</a>
</div>
</body>

逻辑
注册相关代码
首先是注册页面相关的代码(RegServlet.java)

package xyz.jrkang.action;
 
import xyz.jrkang.bean.User;
import xyz.jrkang.test.UserManager;
import xyz.jrkang.util.DbHelper;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
 

public class RegServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置编码
        request.setCharacterEncoding("utf-8");
        // 获取参数
        String userName = request.getParameter("userName");
        String pwd = request.getParameter("pwd");
        int age = Integer.parseInt(request.getParameter("age"));
        String sex = request.getParameter("sex");
 
        //新增
        String sql = "insert into users values(?,?,?,?)";
        Object[] objs = {userName, pwd, age, sex};
        int count = DbHelper.update(sql, objs);
 
        // 响应
        if (count > 0) {
            // 转发到用户信息列表页面
            ArrayList<User> users = UserManager.getUser();
            request.setAttribute("users", users);
            request.getRequestDispatcher("userList.jsp").forward(request,
                    response);
        } else {
            response.sendRedirect("reg.jsp");
        }
    }
}

登录相关代码
然后是登录相关的代码(LoginServlet.java)

package xyz.jrkang.action;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import xyz.jrkang.bean.User;
import xyz.jrkang.test.UserManager;
 

 
public class LoginServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
 
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置编码
        request.setCharacterEncoding("utf-8");
        // 获取参数
        String userName = request.getParameter("userName");
        String pwd = request.getParameter("pwd");
        User user = UserManager.login(userName, pwd);
 
        if (user != null) {
            HttpSession session = request.getSession();
            session.setAttribute("user", user);
            response.sendRedirect("userList.jsp");
        } else {
            // 登录失败传递
            request.setAttribute("msg", "账户名或密码错误!!!");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }
    }
}

用户详情页代码
这里新增了一个UserManager.java工具类

里面写入了两个方法:

登录查询方法
查询所有用户方法

package xyz.jrkang.test;
 
import xyz.jrkang.bean.User;
import xyz.jrkang.util.DbHelper;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 

public class UserManager {
    public static ArrayList<User> getUser() {
        ArrayList<User> userList = new ArrayList<User>();
        Connection conn = DbHelper.getConn();
        ResultSet rs = null;
        PreparedStatement ps = null;
        String sql = "select * from users";
        try {
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            while (rs.next()) {
                User user = new User();
                user.setUserName(rs.getString("user_name"));
                user.setPwd(rs.getString("pwd"));
                user.setAge(rs.getInt("age"));
                user.setSex(rs.getString("sex"));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return userList;
    }
 
    public static User login(String userName, String pwd) {
        Connection conn = DbHelper.getConn();
        PreparedStatement ps = null;
        ResultSet rs = null;
        User user = null;
        String sql = "select * from users where user_name=? and pwd =?";
        try {
            ps = conn.prepareStatement(sql);
            ps.setString(1, userName);
            ps.setString(2, pwd);
            rs = ps.executeQuery();
            if (rs.next()) {
                user = new User();
                user.setUserName(rs.getString("user_name"));
                user.setPwd(rs.getString("pwd"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return user;
    }
}

web.xml文件配置

 <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>xyz.jrkang.action.LoginServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>RegServlet</servlet-name>
        <servlet-class>xyz.jrkang.action.RegServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>RegServlet</servlet-name>
        <url-pattern>/reg</url-pattern>
    </servlet-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值