基于servlet的web表单登录注册页面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_38239454/article/details/79062624

这篇博客存放很久了,才看到一直在草稿箱里,再整理一下发出来。

结合哔哩哔哩教学视频,实际写了一遍web的简单项目。

一、项目结构图

二、代码片段

1.创建实体类

代码如下:

package com.liumce.bean;

import java.io.Serializable;

public class Student implements Serializable {

    private Integer id;       // id 使用业务无关主键
    private String num;       // 学号
    private String password;  //登录密码
    private String name;
    private int age;
    private double score;

    public Student(){}
    public Student(String num, String name, int age, double score) {
        this.num = num;
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public Integer getId() {
        return id;
    }

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

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getPassword() {
        return password;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

2.编写接口

package com.liumce.dao;

import com.liumce.bean.Student;

public interface IStudentDao {
    Student selectStudentLogin(String num, String password);

    Integer insertStudent(Student student);
}

3.实现接口

package com.liumce.dao;

import com.liumce.bean.Student;
import com.liumce.util.JdbcUtils;

import java.sql.*;

public class StudentDaoImpl implements IStudentDao {

    private Connection conn;
    private Statement stmt;
    private PreparedStatement ps;
    private ResultSet rs;

    @Override
    public Student selectStudentLogin(String num, String password) {

        Student student = null;
        try {
            conn = JdbcUtils.getConnection();
            String sql = "select * from student where num=? and password=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,num);
            ps.setString(2,password);
            rs=ps.executeQuery();
            if (rs.next()){
                student = new Student();
                student.setId(rs.getInt("id"));
                student.setNum(rs.getString("num"));
                student.setPassword(rs.getString("password"));
                student.setName(rs.getString("name"));
                student.setAge(rs.getInt("age"));
                student.setScore(rs.getDouble("score"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                JdbcUtils.close(conn , ps,rs);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return student;
    }

    @Override
    public Integer insertStudent(Student student) {
    Integer id = null;
        try {
            conn = JdbcUtils.getConnection();
            String sql = "insert into student(num,password,name,age,score) values(?,?,?,?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1, student.getNum());
            ps.setString(2, student.getPassword());
            ps.setString(3, student.getName());
            ps.setInt(4, student.getAge());
            ps.setDouble(5, student.getScore());
            ps.executeUpdate();

            sql = "SELECT @@IDENTITY newId";
//            sql = "SELECT  last_insert_id() newId";
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            if (rs.next()){
                id = rs.getInt("newId");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                JdbcUtils.close(conn, ps, rs);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return id;
    }
}

结果如图:

4.编写学生service接口

package com.liumce.service;

import com.liumce.bean.Student;

public interface IStudentService {

    //对用户进行验证
    Student cheakUser(String num, String password);
    // 向DB中添加Student
    Integer saveStudent(Student student);
}

5. 

package com.liumce.service;

import com.liumce.bean.Student;
import com.liumce.dao.IStudentDao;
import com.liumce.dao.StudentDaoImpl;

public class StudentServiceImpl implements IStudentService {

    private IStudentDao dao;

    public StudentServiceImpl() {
        dao = new StudentDaoImpl();
    }

    @Override
    public Student cheakUser(String num, String password) {


        return dao.selectStudentLogin(num, password);
    }

    @Override
    public Integer saveStudent(Student student) {
        return dao.insertStudent(student);

    }
}

效果如图:

6.新建登录注册servlet

代码如下:

package com.liumce.servlet;

import com.liumce.bean.Student;
import com.liumce.service.IStudentService;
import com.liumce.service.StudentServiceImpl;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import java.io.IOException;

//@WebServlet(name="LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

        //1、 接收请求参数
        String num = request.getParameter("num");
        String password = request.getParameter("password");
        //获取session
        HttpSession session = request.getSession();
        //防止用户从地址栏访问 +  防止用户没输内容
        if (num == null || "".equals(num.trim())) {
           // request.getRequestDispatcher("/login.jsp");
            session.setAttribute("message","学号输入有误");
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return;
        }

        if (password == null || "".equals(num.trim())) {
            session.setAttribute("message","密码输入有误");
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return;
        }
        //2、 创建Service对象
        IStudentService service = new StudentServiceImpl();

        //3、 调用Service对象的checkUser()方法对用户进行验证
        Student student =  service.cheakUser(num, password);
        //4、 验证未通过则跳转到登录页面,让用户再次输入登录信息。此时需要给用户提示一些信息
        if (student == null) {
            session.setAttribute("message","用户名验证未通过");
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return;
        }

        //5、 验证通过则跳转到系统主页面index.jsp,
        response.sendRedirect(request.getContextPath()+"/index.jsp");
    }
}
package com.liumce.servlet;

import com.liumce.bean.Student;
import com.liumce.service.IStudentService;
import com.liumce.service.StudentServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//@WebServlet(name="registerServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        // 1、获取表单参数
        String num = request.getParameter("num");
        String password = request.getParameter("password");
        String name = request.getParameter("name");
        String ageStr = request.getParameter("age");
        String scoreStr = request.getParameter("score");

        //验证
//        if (num == null || "".equals(num.trim())) {
//            response.sendRedirect(request.getContextPath()+"/login.jsp");
//            return;
//        }
        Integer age = Integer.valueOf(ageStr);
        Double score = Double.valueOf(scoreStr);

        // 2、创建Student对象
        Student student = new Student(num, name, age, score);
        student.setPassword(password);

        // 3、创建Service对象
        IStudentService service = new StudentServiceImpl();
        // 4、调用Service对象的saveStudent()方法将对象写入到DB
        Integer id = service.saveStudent(student);

        // 5、写入失败,跳转到注册页面,重新注册
        if (id == null) {
            response.sendRedirect(request.getContextPath() + "/register.jsp");
            return;
        }
        // 6、写入成功。刚跳转到登录页面
        response.sendRedirect(request.getContextPath() + "/login.jsp");
    }

}
package com.liumce.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


//@WebServlet(name = "toRegisterServlet")
public class ToRegisterServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.sendRedirect(request.getContextPath() + "/register.jsp");

    }
}


6.新建jdbc连接工具类

package com.liumce.util;

import java.sql.*;

public class JdbcUtils {

    //加载db驱动
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    private static Connection conn = null;
    //获取Connection对象
    public static Connection getConnection() throws SQLException {

            String url = "jdbc:mysql://127.0.0.1:3306/test_web";
            String user = "root";
            String password = "1";
            if (conn == null || conn.isClosed()) {
                conn = DriverManager.getConnection(url, user, password);
            }
            return conn;
    }

    //关闭资源
    public static void close(Connection conn, Statement stmt, ResultSet rs) throws SQLException {


            if (conn != null && !conn.isClosed()) {
                conn.close();
            }
            if (stmt != null && !stmt.isClosed()) {
                stmt.close();
            }
            if (rs != null && !rs.isClosed()) {
                rs.close();
            }

    }
}

7.web.xml文件的注册

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.liumce.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>RegisterServlet</servlet-name>
        <servlet-class>com.liumce.servlet.RegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/RegisterServlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ToRegisterServlet</servlet-name>
        <servlet-class>com.liumce.servlet.ToRegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ToRegisterServlet</servlet-name>
        <url-pattern>/ToRegisterServlet</url-pattern>
    </servlet-mapping>

</web-app>

参考这个:http://blog.csdn.net/mytt_10566/article/details/70173007
                  http://blog.csdn.net/yanglun1/article/details/46440691

二、报错解决

一直解决的问题:

可是我明明有jar的驱动包啊。。。。 

最后才发现IDEA自己就有一个:

所以又在WEB_INF下面新建了一个lib文件夹  再把驱动放进去才没有报错了!!!

三、实现

猜你喜欢

转载自blog.csdn.net/sinat_38239454/article/details/79062624