DAY2 使用Servlet实现简单的登陆注册功能

开发环境:IDEA2019、Tomcat7.0、Mysql5.5.5、Wampserver64

新建文件
打开IDEA新建一个Java Web Application项目,选择tomcat,输入一些必要信息直到finish。
在这里插入图片描述
此次开发需要用到两个jar包
JSP标准标签库(JSTL)
mysql-connector-java
选择自己适合的版本下载好之后在IDEA中导入 File -> Project Structure -> Project Settings -> Module -> Dependencies 点击+号添加jar包
在这里插入图片描述
2.文件目录介绍
初始目录下只有一个src文件夹(空)和web目录,在src文件夹下新建文件目录如图所示
在这里插入图片描述
dao 文件夹下类主要处理与数据库的交互,登录和注册主要用到查询和插入数据库功能;
model 文件夹主要存放实体类信息,我们只需要用到user实体类;
service 文件夹主要存放一些业务类,个人理解为在dao层对数据库进行操作时对数据进行一个预处理;
servlet 文件夹主要作为控制层来处理表单发送的数据,即处理用户的请求信息;
test 文件夹主要用于开发过程中测试功能;
util 文件夹主要存放一些工具类,例如数据库连接、数据处理方法等。
Web 文件下主要存放需要用到的jsp文件以及一些网页的静态资源;

3.连接数据库工具类
在Util 工具类中,本次仅需要用到连接数据库的功能,当然也可以在该工具类中声明一个用于判断数据是否有效的判断类,但时间关系没有用到。
新建一个class类DBUtil,主要用于连接数据库和关闭连接

import java.sql.*;
public class DBUtil {

//建立连接
public static Connection getConnection() throws ClassNotFoundException, SQLException {
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = //此处的3306对应安装的mysql的端口号、asd对应选择的数据库名、最后两个参数分别表示mysql用户名和密码
         DriverManager.getConnection("jdbc:mysql://localhost:3306/asd?useSSL=false","root","");
   
    return connection;
}
//关闭连接
public static void closeAll(ResultSet rs, Statement stmt, Connection conn) throws SQLException {
    if(rs!=null){
        rs.close();
    }
    if(stmt!=null){
        stmt.close();
    }
    if(conn!=null){
        conn.close();
    }
}

}
连接好数据库之后,在Dao目录下新建一个用于访问数据库的UserDao类,实现对数据库的查询和插入操作
import com.shixi.model.User;
import com.shixi.util.DBUtil;
import java.sql.*;

public class UseDao {
//登陆查询数据库
public User selectByName(String name) throws SQLException {
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
DBUtil util = new DBUtil();
User user = new User();
try{
conn = util.getConnection();
pstmt = conn.prepareStatement(“select * from user where name = ?”);
pstmt.setString(1,name);
rs = pstmt.executeQuery();
while(rs.next()){
user.setId(rs.getInt(1)); //第几个字段
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setAge(rs.getString(4));
}
}catch(Exception e){
e.printStackTrace();
}finally {
util.closeAll(rs,pstmt,conn);
}
return user;
}
//注册插入数据库
public boolean insertUserInfo(String name, String password) throws SQLException, ClassNotFoundException {
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
DBUtil util = new DBUtil();
boolean flag = true;
try {
conn = util.getConnection();
pstmt = conn.prepareStatement(“insert into user values(null,?,?,null)”);
pstmt.setString(1, name);
pstmt.setString(2, password);
pstmt.execute();
}catch(Exception e){
e.printStackTrace();
}finally {
util.closeAll(rs,pstmt,conn);
}
return flag;
}

}
4实体类和业务类
在model目录下新建一个实体类User,声明User中的各个属性
public class User {
private int id;
private String name;
private String password;
private String age;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}
@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", password='" + password + '\'' +
            ", age='" + age + '\'' +
            '}';
}

}
在Service目录下新建一个处理User的业务类UserService,联合dao一同使用对数据处理。
import com.shixi.dao.UseDao;
import com.shixi.model.User;
import java.sql.SQLException;

public class UserService {
static UseDao useDao = new UseDao();
public static User selectByName(String name) throws SQLException {
return useDao.selectByName(name);
}
public static boolean insertUserInfo(String name, String password) throws SQLException, ClassNotFoundException {
return useDao.insertUserInfo(name,password);
}
}
Servlet类
Servlet在web.xml文件中进行配置,作为控制层对从jsp发送的表单数据进行处理,包含了doPost方法和doGet方法,LoginServlet和RegisterServlet分别处理登陆和注册
LoginServlet
import com.shixi.model.User;
import com.shixi.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;

public class LoginServlet extends HttpServlet {

UserService userService = new UserService();

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
    String name = req.getParameter("name");
    String password = req.getParameter("password");
   
    User user = null;
    try {
        user = userService.selectByName(name);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    if(password.equals(user.getPassword())){
        resp.getWriter().write("success");
    }else{
        resp.getWriter().write("failed");
    }
}

}
RegisterServlet:
import com.shixi.model.User;
import com.shixi.service.UserService;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;

public class RegisterServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
    String name = req.getParameter("name");
    String password = req.getParameter("password");
    System.out.println(name+" "+password);
    boolean flag = false;
    try {
        flag = UserService.insertUserInfo(name,password);
        System.out.println(flag);
        if(flag){
            req.setAttribute("success","注册成功,请登录");
            req.getRequestDispatcher("index.jsp").forward(req,resp);
        }else{
            req.setAttribute("error","注册失败,请重试");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}
6jsp和web.xml配置
一共用到两个jsp页面,分别是login.jsp和register.jsp(这里当初直接使用了index.jsp作为登陆界面,没有重写一个login)里面就一些基础的html布局,做的很简单。
login.jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

登陆

登陆界面

      <div>
        <%--@declare id="user"--%><label for="user">帐号: <input name="name" type="text"></label>
      </div>
      <div>
        <%--@declare id="password"--%><label for="password">密码: <input name="password" type="password"></label>
      </div>
      <div>
      <input type="submit" value="登陆">
      <input type="button" value="注册"onclick="javascript:window.location.href='register.jsp'">
      </div>

  </form>
</div>

register.jsp
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

注册

注册界面

<%--@declare id="user"--%>
<%--@declare id="password"--%>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值