第一个Java练手项目

本练手项目使用Servlet+JSP技术实现,由Idea,Oracle,Tomcat搭建,实现用户注册,登陆,用户信息修改,删除,查看功能。

  1. 建表(添加序列和触发器使id自增)

create table WYW_STUDENTS
(
  id       NUMBER(2) not null,
  username VARCHAR2(20),
  password VARCHAR2(20),
  sex      VARCHAR2(20),
  email    VARCHAR2(30)
)

-- Create sequence 
create sequence WYW_STUDENTS_SEQ
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;

--create trigger
create or replace trigger tr_wyw_students
before insert on wyw_students
for each row
begin
select wyw_students_seq.nextval into :new.id from dual;
end;

2.新建项目
2.1搭建项目结构
参照该博客搭建
https://blog.csdn.net/zonzzz/article/details/78494597
2.2目录结构介绍
目录结构
filter:过滤器,解决中文乱码问题
entity/bean:实体类
dao:业务逻辑层(接口)
impl:实现层
servlet:servlet类
util:工具包,实现对数据库的连接

DbInfo.properties:数据库配置文件
  1. 代码
    3.1 EncodingFilter 字符集过滤器,实现Filter接口
package wyw.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @ClassName EncodingFilter
 * @Description 解决中文字符集乱码
 * @Author Wangyw
 */
public class EncodingFilter implements Filter {

    public EncodingFilter() {
        System.out.println("过滤器构造");

    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器初始化");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse reponse, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        reponse.setContentType("text/html;charset = utf-8");
        chain.doFilter(request,reponse);
    }

    @Override
    public void destroy() {
        System.out.println("过滤器销毁");
    }
}


3.2 web.xml(对EncodingFilter 进行配置)

<filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>wyw.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern><!-- *为过滤所有 -->
 </filter-mapping>

3.3 DbInfo.properties 数据库配置文件

driver = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:127.0.0.1:ORCL
userName = wangyw
passWord = wangyw

3.4 DBConn 数据库连接

package wyw.util;

import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @ClassName DbConn
 * @Description
 * @Author Wangyw
 */
public class DbConn {
    private Connection connection = null;//企业级开发中,connection不要用static修饰,在哪用就在哪初始化

    private static DbConn instance = null;

    private String driver = "";
    private String url = "";
    private String userName = "";
    private String passWord = "";

    private static FileInputStream fis = null;
    private static Properties properties = null;

    public static DbConn getInstance(){
        if(instance == null){
            instance = new DbConn();
        }
        return instance;
    }

    //只连接一次,放入构造器中,单例模式
    private DbConn(){
        try {

            properties = new Properties();
            /*fis = new FileInputStream("DbInfo.properties");
            properties.load(fis);*/
            properties.load(DbConn.class.getResourceAsStream("/DbInfo.properties"));

            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            userName = properties.getProperty("userName");
            passWord = properties.getProperty("passWord");

            //加载驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public Connection getConnection() {
        try {
            connection = DriverManager.getConnection(url, userName, passWord);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public void close(Connection connection, Statement statement, ResultSet resultSet) {
        if (connection != null) {//connection:晚开早关
            try {
                connection.close();
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (statement != null) {
            try {
                statement.close();
                statement = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (resultSet != null) {
            try {
                resultSet.close();
                resultSet = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}


3.5 Students类 entity下(对用户对象的抽象,对应数据库中的表,表中每个字段对应实体类中一个属性)

package wyw.entity;

/**
 * @ClassName Students
 * @Description
 * @Author Wangyw
 */
public class Students {
    private int id;
    private String name;
    private String pwd;
    private String sex;
    private String email;


    public Students() {
        super();
    }

    public Students(int id, String name, String pwd, String sex, String email) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
        this.sex = sex;
        this.email = email;

    }

    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 getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

3.6 StudentsDao接口

package wyw.dao;

import wyw.entity.Students;

import java.util.List;

public interface StudentsDao {
    public boolean login(String name,String pwd);
    public boolean register(Students students);
    public List<Students> getAllStudents();
    public boolean delete(int id);
    public boolean update(int id,String name,String pwd,String sex,String email);

}



3.6 实现类

package wyw.impl;

import wyw.dao.StudentsDao;
import wyw.entity.Students;
import wyw.util.DbConn;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName StudentsImpl
 * @Description
 * @Author Wangyw
 */
public class StudentsImpl implements StudentsDao {
    private DbConn dbConn;
    private Connection connection = null;
    private PreparedStatement statement = null;
    private ResultSet resultSet  = null;

    /*public StudentsImpl() {
        super();
    }
    */

    public StudentsImpl(DbConn dbConn) {
        this.dbConn = dbConn;
    }

    @Override
    public boolean login(String name, String pwd) {

        boolean flag = false;

        try {
            connection = dbConn.getConnection();
            String sql = "select username,password from wyw_students where username = '"+ name +"'";
            statement = connection.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();

            while(resultSet.next()){
                if(resultSet.getString("username").equals(name) && resultSet.getString("password").equals(pwd)){
                    flag = true;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }

    @Override
    public boolean register(Students students) {

        boolean flag = false;

        try {
            connection = dbConn.getConnection();

            boolean login = login(students.getName(), students.getPwd());

            if (login == false) {
                statement = connection.prepareStatement("insert into wyw_students (username,password) values (?,?)");
                statement.setString(1, students.getName());
                statement.setString(2, students.getPwd());
                statement.executeUpdate();
                connection.commit();
                System.out.println("注册成功");

                flag = true;

            } else {
                System.out.println("该用户名已存在,请重新输入");

            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbConn.close(connection,statement,null);
        }
        return flag;
    }

    @Override
    public List<Students> getAllStudents() {
        List<Students> list = new ArrayList<Students>();

        try {
            connection = dbConn.getConnection();
            String sql = "select * from wyw_students";
            statement = connection.prepareStatement(sql);
            resultSet = statement.executeQuery();

            while(resultSet.next()){
                Students stu = new Students();
                stu.setId(resultSet.getInt("id"));
                stu.setName(resultSet.getString("username"));
                stu.setPwd(resultSet.getString("password"));
                stu.setSex(resultSet.getString("sex"));
                stu.setEmail(resultSet.getString("email"));
                list.add(stu);

            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbConn.close(connection,statement,resultSet);
        }
        return list;
    }

    @Override
    public boolean delete(int id) {
        boolean flag = false;

        try {
            connection = dbConn.getConnection();

            statement = connection.prepareStatement("delete from wyw_students where id="+id);
            statement.executeUpdate();
            connection.commit();

            flag = true;

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbConn.close(connection,statement,null);
        }
        return flag;
    }

    @Override
    public boolean update(int id, String name, String pwd, String sex, String email) {
        boolean flag = false;

        try {
            connection = dbConn.getConnection();
            statement = connection.prepareStatement("update wyw_students set username ='"+name
                        +"' , password ='"+pwd
                        +"' , sex ='"+sex
                        +"' , email ='"+email
                        +"' where id = "+id);

            statement.executeUpdate();
            connection.commit();

            flag = true;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbConn.close(connection,statement,null);
        }
        return flag;
    }
}

3.7 LoginServlet

package wyw.servlet;

import wyw.dao.StudentsDao;
import wyw.impl.StudentsImpl;
import wyw.util.DbConn;

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("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");

        StudentsDao students = new StudentsImpl(DbConn.getInstance());
        if(students.login(name,pwd)){
            request.setAttribute("meaasge","你好:"+name);
            request.getRequestDispatcher("/success.jsp").forward(request,response);
        }else{
            response.sendRedirect("index.jsp");
        }

    }
}


3.8 RegisterServlet

package wyw.servlet;

import wyw.dao.StudentsDao;
import wyw.entity.Students;
import wyw.impl.StudentsImpl;
import wyw.util.DbConn;

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("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String email = request.getParameter("email");

        Students students = new Students();
        students.setName(name);
        students.setPwd(pwd);
        students.setSex(sex);
        students.setEmail(email);

        StudentsDao studentsDao = new StudentsImpl(DbConn.getInstance());

        if(studentsDao.register(students)){

            request.setAttribute("name", name);  //向request域中放置参数
            request.setAttribute("pwd", pwd);  //向request域中放置参数
            request.setAttribute("sex", sex);  //向request域中放置参数
            request.setAttribute("email", email);  //向request域中放置参数
            request.setAttribute("message", "注册成功");
            request.getRequestDispatcher("/login.jsp").forward(request, response);  //转发到登录页面

        }else{
            response.sendRedirect("index.jsp");
        }

    }
}

3.9 CheckServlet

package wyw.servlet;

import wyw.dao.StudentsDao;
import wyw.entity.Students;
import wyw.impl.StudentsImpl;
import wyw.util.DbConn;

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;
import java.util.List;

@WebServlet("/CheckServlet")
public class CheckServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        StudentsDao stu = new StudentsImpl(DbConn.getInstance());
        List<Students> allStudents = stu.getAllStudents();
        request.setAttribute("allStudents",allStudents);
        request.getRequestDispatcher("/check.jsp").forward(request, response);

    }
}

3.10 UpdateServlet

package wyw.servlet;

import wyw.dao.StudentsDao;
import wyw.impl.StudentsImpl;
import wyw.util.DbConn;

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("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        int userId = Integer.parseInt(id);

        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String email = request.getParameter("email");


        System.out.println("------------------------------------"+userId);

        StudentsDao stu = new StudentsImpl(DbConn.getInstance());

        if(stu.update(userId,name,pwd,sex,email)){
            request.setAttribute("message", "更新成功");
            request.getRequestDispatcher("/CheckServlet").forward(request, response);
        }else{
            response.sendRedirect("index.jsp");
        }


    }
}

3.10 DeleteServlet

package wyw.servlet;

import wyw.dao.StudentsDao;
import wyw.impl.StudentsImpl;
import wyw.util.DbConn;

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("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        int userId = Integer.parseInt(id);

        StudentsDao stu = new StudentsImpl(DbConn.getInstance());

        if(stu.delete(userId)){
            request.setAttribute("message", "删除成功");
            request.getRequestDispatcher("/CheckServlet").forward(request, response);
        }else{
            response.sendRedirect("index.jsp");
        }


    }
}

3.11 JSP页面
3.11.1 login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>登录注册</title>
</head>
<body >
<form action="LoginServlet"  method="post"  style="padding-top:-700px;">
    用户名:<input type="text" name="name"value=""><br><br>
    密码:  <input type="password" name="pwd"value=""><br><br>
    <input type="submit"value="登录"name="login"><input type="reset"value="重置"><br>
</form>
<form action="register.jsp">
    <input type="submit"value="注册">
</form>

</body>
</html>

3.11.2 register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>注册</title>
</head>
<body >
<form action="RegisterServlet"method="post" style="padding-top:-700px;">
    输入用户名:<input name="name" type="text"><br><br>
    输入密码:<input name="pwd" type="password"><br><br>
    选择性别:<input type="radio"name="sex"value="男"checked><input type="radio"name="sex"value="女"><br><br>
    填写邮箱信息:<br>
    <textarea name="email" row="5"cols="30"></textarea><br>
    <input type="reset"value="重置"><input type="submit"value="注册">
</form>
</body>
</html>


3.11.3 success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>登陆成功</title>
</head>
<body>
${message} <br>
<a href="CheckServlet">查看所有用户</a>
</body>
</html>

3.11.4 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
  String path = request.getContextPath();
  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>失败</title>
</head>
<body>
<h1>操作失败,请检查</h1>
</body>
</html>


3.11.5 check.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019/5/9 0009
  Time: 9:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>查看用户</title>
</head>

<body>
<h1>${message}</h1>
<table  width="600" border="1" cellpadding="0" >
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>密码</th>
        <th>邮箱</th>
        <th>操作</th>
    </tr>
    <c:forEach var="S" items="${allStudents}"  >
        <form action="UpdateServlet" method="post">
            <tr>
                <td><input type="text" value="${S.id}" name="id" ></td>
                <td><input type="text" value="${S.name}" name="name"></td>
                <td><input type="text" value="${S.sex}" name="sex"></td>
                <td><input type="text" value="${S.pwd}" name="pwd"></td>
                <td><input type="text" value="${S.email}" name="email"></td>
                <td><a href="DeleteServlet?id=${S.id}">删除</a>  <input type="submit" value="更新"/></td>
            </tr>
        </form>
    </c:forEach>
</table>
</body>
</html>


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值