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>