Javaweb初学——【JSP+Servlet+JDBC】登录注册简单实现
·
**登录页面设计**
1,数据库设计与连接 user表,
2,前端设计
登录页面 login.jsp
yes --->success.jsp
no ---->error.jsp
注册页面 register.jsp
yes --->success.jsp
no ---->error.jsp
3,后端设计
登录--->loginServlet.java
注册--->rigsterServlet.java
效果展示
页面十分简单,主要是我为了学习http与后端以及数据库连接。
1,数据库连接
1.注册驱动:
Class.forName("com.mysql.jdbc.Driver");
2.获取连接
Connection con = DriverManager.getConnection(url , username , password ) ;
3.创建一个preparedStatement
PreparedStatement pstmt = con.prepareStatement(sql) ;
4.执行SQL语句
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
JDBCUtils.java
package com.company.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
public JDBCUtils(){}
private static String driverClass;
private static String url;
private static String username;
private static String passward;
private static Connection con;
static {
try {
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("config.properties");
Properties prop = new Properties();
prop.load(is);
driverClass = prop.getProperty("driverClass");
url = prop.getProperty("url");
username = prop.getProperty("username");
passward = prop.getProperty("password");
Class.forName(driverClass);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
con = DriverManager.getConnection(url,username,passward);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public static void close(Connection con, Statement sta, ResultSet rs){
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (sta != null){
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection con, Statement sta){
if (con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (sta != null){
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
配置文件config.properties
用来存放自己的数据库连接信息
driverClass = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/studentmanger
username = root
password = root
之后在UserDao类调用JDBCUtils方法就可以实现连接数据库,对数据库进行增删改查。
**
2.前端页面设计
**
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<link rel="stylesheet" type="text/css" href="./homepage.css">
<div style="text-align: center">
<form action="LoginServlet" method="post" id="loginform">
账号:<input type="text" placeholder="手机号或邮箱" name="username"/><br>
密码:<input type="password" placeholder="密码" name="passward"/><br>
<input type="submit" class="inputButton" value="登录" />
<a href="register.jsp">没有账号,点击注册</a>
</form>
</div>
</body>
<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script>
</script>
</html>
Register.jsp
<%--
Created by IntelliJ IDEA.
User: Yami
Date: 2022/1/22
Time: 21:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<div style="text-align: center">
<form action="RegisterServlet" method="post" id="registerform">
账号:<input type="text" placeholder="手机号或邮箱" name="username"/><br>
密码:<input type="password" placeholder="密码" name="passward"/><br>
<input type="submit" class="inputButton" value="注册" />
</form>
</div>
</body>
</html>
前端页面通过action="xxxServlet"连接后端,对登录和注册分别进行处理。
3.后端servlet
后端总共包括bean层、Dao层、servlet层。(因为功能比较简单,省略了service层)
bean层:定义User类
User.java
package com.company.bean;
public class User {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
Dao层:BaseDao+UserDao
BaseDao:一个接口,Basedao里写泛用性较强的抽象方法,比如数据库的增删改查,其他dao层接口继承basedao,对方法进行重写,可减少代码的重复,以追求高内聚低耦合。
BaseDao.java
package com.company.dao;
import java.util.List;
public BaseDao<E> {
public boolean add(E e);
public void delete(E e);
public void update(E e);
public boolean findbone(String username, String passward);
public List<E> findall();
}
UserDao.java
继承BaesDao方法,增删改查方法(只写了部分会用到的,部分没写)
package com.company.dao;
import com.company.bean.User;
import com.company.utils.JDBCUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDao implements BaseDao<User>{
JDBCUtils jdb = new JDBCUtils();
@Override
public boolean add(User user) {
Connection con = null;
PreparedStatement stat = null;
int i = 0;
try{
con = JDBCUtils.getConnection();
stat = con.prepareStatement("INSERT INTO user VALUES(?,?,?)");
stat.setString(1,null);
stat.setString(2, user.getUsername());
stat.setString(3, user.getPassword());
i = stat.executeUpdate();
System.out.println(i);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.close(con, stat);
}
if(i>0){
return true;
}else {
return false;
}
}
@Override
public void delete(User user) {
Connection con = null;
Statement stat = null;
try{
con = JDBCUtils.getConnection();
stat = con.createStatement();
String sql = "DELETE FROM user WHERE id='"+user.getId()+"'";
stat.executeUpdate(sql);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.close(con, stat);
}
}
@Override
public void update(User o) {
}
@Override
public boolean findbone(String username, String passward) {
Connection con = null;
PreparedStatement stat = null;
ResultSet rs = null;
boolean result = false;
try {
con = JDBCUtils.getConnection();
stat = con.prepareStatement("SELECT *FROM user WHERE username = ? and passward = ?");
stat.setString(1, username);
stat.setString(2, passward);
rs = stat.executeQuery();
if (rs.next()) {
result = true;
} else {
result = false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.close(con, stat, rs);
}
return result;
}
@Override
public List findall() {
Connection con = null;
Statement stat = null;
ResultSet rs = null;
ArrayList<User> list = new ArrayList<User>();
try{
con = JDBCUtils.getConnection();
stat = con.createStatement();
String sql = "SELECT *FROM user";
rs = stat.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
User user = new User(id, name,null);
list.add(user);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.close(con, stat, rs);
}
return list;
}
}
servlet层
LoginServlet.java
package com.company.servlet;
import com.company.dao.UserDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
UserDao userDao = new UserDao();
@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 {
String username = request.getParameter("username");
String passward = request.getParameter("passward");
System.out.println(passward);
System.out.println(username);
if(userDao.findbone(username,passward)){
response.sendRedirect(request.getContextPath()+"/success.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/error.jsp");
}
}
}
Register.java
package com.company.servlet;
import com.company.bean.User;
import com.company.dao.UserDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "RegisterServlet", value = "/RegisterServlet")
public class RegisterServlet extends HttpServlet {
UserDao userDao = new UserDao();
@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 {
String username = request.getParameter("username");
String passward = request.getParameter("passward");
User user = new User(null,username,passward);
if(userDao.add(user)){
response.sendRedirect(request.getContextPath()+"/success.jsp");
System.out.println("用户注册成功");
}else{
response.sendRedirect(request.getContextPath()+"/error.jsp");
System.out.println("用户注册失败");
}
}
}
结束了,欢迎大家积极提出建议,一起讨论。
https://pan.baidu.com/s/12FoLk1iNO9N4VwveCnVRsA?pwd=ad3f
提取码:ad3f
更多推荐
已为社区贡献1条内容
所有评论(0)