栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

登录、增删改查的页面

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

登录、增删改查的页面

目录

一、创建数据库连接池

二、配置文件

三、写登录、注册的页面

     1.配置index.jsp文件

     2.配置web.xml文件

     3.写登陆的servlet,service类和dao类

     4.登陆失败的页面

     5.注册的页面

     6.配置登陆的文件

     7.注册的Servlet类、Service类、dao类

     8.注册失败的页面

四、对数据库的增删改查页面

     1.登陆后的页面

     2.点击查询所有后的页面

     3.查询的配置文件

     4.查询的Servlet类、Service类、dao类

     5.删除的配置文件

     6.删除的Servlet类、Service类、dao类

     7.修改的配置文件

     8.修改的页面

     9.修改的Servlet类、Service类、dao类

     10.增加数据的配置文件

     11.增加数据的页面

     12.增加数据的Servlet类、Service类、dao类

五、运行的截图


闲的没事,用Servlet、jsp、JDBC、数据库写了登录、注册、增加、删除、修改、查询这些页面,我用了两个数据库来写,一个用来登录和注册,一个用来进行增加、删除、修改、查询,在进行增删改查这些操作之前,要进行登录和注册,登陆的时候要与数据库表格里面的数据相对应,登录错误时会弹出一个页面显示登录错误,点击返回重新登录,注册即为向数据库表格中添加数据。

一、创建数据库连接池

这里面的一些方法都是JDBC常用的方法:

1.Properties类里面的load方法:从输入流中读取属性列表。

2.Properties类里面的getProperty方法:在属性列表里面搜索括号里面的内容。

3.initialSize是创建的连接数量,maxActive是从池分配的最多连接数量,设置0为无限制

4.Class.forName是要求JVM查找或者加载指定的类。

import org.apache.commons.dbcp.BasicDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class NewUtil {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    private static int initnum=3;
    private static int maxNum=5;
    private static BasicDataSource basicDataSource;//创建连接池
    static{
        basicDataSource=new BasicDataSource();
        Properties p=new Properties();
        InputStream is=NewUtil.class.getClassLoader().getResourceAsStream("emp.properties");
        try {
            p.load(is);//读取输入流
            driver=p.getProperty("emp.driver");
            url=p.getProperty("emp.url");
            username=p.getProperty("emp.username");
            password=p.getProperty("emp.password");
            initnum=Integer.parseInt(p.getProperty("emp.initnum"));
            maxNum=Integer.parseInt(p.getProperty("emp.maxNum"));
            basicDataSource.setDriverClassName(driver);
            basicDataSource.setUrl(url);
            basicDataSource.setUsername(username);
            basicDataSource.setPassword(password);
            basicDataSource.setInitialSize(initnum);
            basicDataSource.setMaxActive(maxNum);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//创建一个Connection为Servlet类做准备
    public static Connection getConnection(){
        Connection connection=null;
        try {
            Class.forName(driver);
            connection= DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }
//写一个关闭Connection的方法
    public static void close(Connection c){
        if(c!=null){
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 我们要用到两个数据库,所以我写了两个连接池

package com.buka.edu.util;

import org.apache.commons.dbcp.BasicDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class B0351Util {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    private static  int initnum =3 ;
    private static int maxNum=5;
    private static BasicDataSource basicDataSource;
    static{
        basicDataSource=new BasicDataSource();
        Properties p=new Properties();
        InputStream is=B0351Util.class.getClassLoader().getResourceAsStream("dept.properties");
        try {
            p.load(is);
            driver=p.getProperty("dept.driver");
            url=p.getProperty("dept.url");
            username=p.getProperty("dept.username");
            password=p.getProperty("dept.password");
            initnum=Integer.parseInt(p.getProperty("dept.initnum"));
            maxNum=Integer.parseInt(p.getProperty("dept.maxNum"));
            basicDataSource.setDriverClassName(driver);
            basicDataSource.setUrl(url);
            basicDataSource.setUsername(username);
            basicDataSource.setPassword(password);
            basicDataSource.setMaxActive(maxNum);
            basicDataSource.setInitialSize(initnum);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public  static Connection getConnection(){
        Connection conn=null;
        try {
            Class.forName(driver);
            conn= DriverManager.getConnection(url,username,password);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static void closs(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

二、配置文件

这里面要注意的是数据库的密码一定不要填错

dept.driver=com.mysql.jdbc.Driver
dept.url=jdbc:mysql://localhost:3306/b0351
dept.username=root
dept.password=123456
dept.initnum=3
dept.maxNum=5
emp.driver=com.mysql.jdbc.Driver
emp.url=jdbc:mysql://localhost:3306/newdb3
emp.username=root
emp.password=123456
emp.initnum=3
emp.maxNum=5

三、写登录、注册的页面

1.配置index.jsp文件

这里面我用了很多空格,能在页面展现得更规矩一些

<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 8/1/2022
  Time: 下午6:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  
请输入用户名:
请输入密   码:
                注册

2.配置web.xml文件

注意这里面servlet-name里面的值要和表单action的值相对应,servlet-class里面的值是要运行的servlet的目录


        login
        com.buka.edu.controller.LoginServlet
    
    
        login
        /login
    

3.写登陆的servlet,service类和dao类
注意:
request.setCharacterEncoding("utf-8");     response.setContentType("text/html;charset=utf8");这两行代码是定义编码类型
request.getParameter这个方法是接受前台传的数据
request.getRequestDispatcher("board.jsp").forward(request,response)这个方法时进行转发,转发到那个页面

service类是用来过渡的一个类

dao类里面的方法是实现对数据库进行查询并且和前台传来的username和password比较是否相同的过程

注意:

executeQuery方法的作用是查询表格里面的内容,然后返回给ResultSet类里面

public class LoginServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("html/text;charset=utf8");
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        Service service=new Service();
        boolean bo=service.loginService(username,password);
        if(bo){
            try {
                request.getRequestDispatcher("board.jsp").forward(request,response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
            try {
                request.getRequestDispatcher("login.jsp").forward(request,response);
            } catch (ServletException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
public class Service {
    Dao dao=new Dao();
    public boolean loginService(String username, String password) {
        return dao.loginDao(username,password);
    }
public class Dao {
    public boolean loginDao(String username, String password) {
        Connection conn= B0351Util.getConnection();
        Statement s=null;
        ResultSet rs=null;
        boolean bo=true;
        int num=0;
        try {
            s=conn.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        String sql="select * from login";
        try {
            rs=s.executeQuery(sql);
            while(rs.next()){
                String username1=rs.getString("username");
                String password1=rs.getString("password");
                if(username.equals(username1)&&password.equals(password1)){
                   bo=true;
                    num=num+1;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            B0351Util.closs(conn);
        }
        if(num==0){
            bo=false;
        }
        return bo;
    }

 4.登陆失败的页面

这里面我加了a标签,点击会返回登陆页面

<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 8/1/2022
  Time: 下午6:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


登陆失败
点击重新登陆


5.注册的页面
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 9/1/2022
  Time: 下午6:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


请输入用户名:
请输入密   码:

6.配置登陆的文件

        post
        com.buka.edu.controller.PostServlet
    
    
        post
        /post
    

7.注册的Servlet类、Service类、dao类

这里面的主要实现了注册的账号数据库中如果已经有了,会转发到下一个注册失败的页面,如果注册成功了会返回登陆的页面

public class PostServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        Service service=new Service();
        int num=service.postService(username,password);
        if(num==0){
            try {
                response.sendRedirect("failed.jsp");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else{
            try {
                response.sendRedirect("index.jsp");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        }
    }
public int postService(String username,String password){
        return dao.postDao(username,password);
    }
public int postDao(String username, String password) {
        Connection conn=B0351Util.getConnection();
        int num=1;
        try {
            Statement s=conn.createStatement();
            String sql1="select * from login";
            ResultSet rs=s.executeQuery(sql1);
            while(rs.next()){
                String username1=rs.getString("username");
                String password1=rs.getString("password");
                if(username1.equals(username)&&password.equals(password1)){
                    num=0;
                }
            }
            if(num==1){
                String sql="insert into login values(null,?,?)";
                PreparedStatement ps=conn.prepareStatement(sql);
                ps.setString(1,username);
                ps.setString(2,password);
                num=ps.executeUpdate();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            B0351Util.closs(conn);
        }
        System.out.println(num);
        return num;
    }
}

8.注册失败的页面

这里面同样加了a标签,来返回上级注册页面

<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 9/1/2022
  Time: 下午6:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


注册失败 此用户名和密码已存在
点击重新注册


四、对数据库的增删改查页面

1.登陆后的页面
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 8/1/2022
  Time: 下午7:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


查询所有


2.点击查询所有后的页面

这里面在每一条数据的后面,我都加了删除和修改的a标签,在表格的最下面我加了增加数据的a标签,这里面的循环我用了jsp中的taglib指令,uri是用来指定标签文件或标签库的存放位置,prefix是变迁文件或标签库的别名。

<%@ page import="java.util.List" %>
<%@ page import="com.buka.edu.bean.Emp" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 8/1/2022
  Time: 下午7:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    List list=(List)request.getAttribute("emp");
%>

        
empno ename job mgr hiredate sal comm deptno 操作
${emp.empno} ${emp.ename} ${emp.job} ${emp.mgr} ${emp.hiredate} ${emp.sal} ${emp.comm} ${emp.deptno} 删除    修改

增加数据

3.查询的配置文件

        getAll
        com.buka.edu.controller.GetEmpServlet
    
    
        getAll
        /getAll
    

4.查询的Servlet类、Service类、dao类

Servlet里面我还是用了转发,意思就是点击完查询所有可以和将数据展现在表格当中,并且展示出来

public class GetEmpServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf8");
        Emp emp=new Emp();
        Service  service=new Service();
        List list=service.getService();
        request.setAttribute("emp",list);
        try {
            request.getRequestDispatcher("getUser.jsp").forward(request,response);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public List getService(){
        return dao.getDao();
    }
public List getDao() {
        Connection connection=NewUtil.getConnection();
        List list=null;
        try {
            Statement s=connection.createStatement();
            String sql="select * from emp";
            ResultSet rs=s.executeQuery(sql);
            list=new ArrayList();
            while(rs.next()){
                Emp emp=new Emp();
                int empno=rs.getInt("EMPNO");
                String ename=rs.getString("ENAME");
                String job=rs.getString("JOB");
                int mgr=rs.getInt("MGR");
                String hiredate=rs.getString("HIREdate");
                int sal=rs.getInt("SAL");
                int comm=rs.getInt("COMM");
                int deptno=rs.getInt("DEPTNO");
                emp.setEmpno(empno);
                emp.setEname(ename);
                emp.setJob(job);
                emp.setMgr(mgr);
                emp.setHiredate(hiredate);
                emp.setSal(sal);
                emp.setComm(comm);
                emp.setDeptno(deptno);
                list.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            NewUtil.close(connection);
        }
        return list;
    }

5.删除的配置文件

        delete
        com.buka.edu.controller.DeleteServlet
    
    
        delete
        /delete
    

6.删除的Servlet类、Service类、dao类

这里面的删除并没有其他页面,只是在当前查询页面进行展示。dao类里面用的prepareStatement里的executeUpdate方法,返回值类型是int类型,意思是改变了多少条数据。在dao类里面empno的值是在前台获得的,获取方法在查询页面的jsp文件中。

public class DeleteServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf8");
        Service service=new Service();
        int empno=Integer.parseInt(request.getParameter("empno"));
        int num=service.deleteService(empno);
        if(num==0){
        }else{
            try {
                response.sendRedirect("getAll");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
public int deleteService(int empno){
        return dao.deleteDao(empno);
    }
public int deleteDao(int empno) {
        Connection conn=NewUtil.getConnection();
        String sql="delete from emp where empno=?";
        int num=0;
        try {
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setInt(1,empno);
            num=ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            NewUtil.close(conn);
        }
        return num;
    }

7.修改的配置文件

        getOne
        com.buka.edu.controller.GetOneServlet
    
    
        getOne
        /getOne
    
    
        update
        com.buka.edu.controller.UpdateServlet
    
    
        update
        /update
    

8.修改的页面
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 9/1/2022
  Time: 下午1:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


empno:
ename:
job   :
mgr   :
hiredate:
sal   :
comm   :
deptno:

9.修改的Servlet类、Service类、dao类

这里面为什么有两个Servlet呢,因为getOne的Servlet类是用来获取值的,也就是,我们再进行修改的时候,要把所有的数据展现在表单中,这样能更清晰的修改,并且将修改后的数据传回数据库并且展现在表格当中。

public class UpdateServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf8");
        int empno=Integer.parseInt(request.getParameter("empno"));
        String ename=request.getParameter("ename");
        String job=request.getParameter("job");
        int mgr=Integer.parseInt(request.getParameter("mgr"));
        String hiredate=request.getParameter("hiredate");
        int sal=Integer.parseInt(request.getParameter("sal"));
        int comm=Integer.parseInt(request.getParameter("comm"));
        int deptno=Integer.parseInt(request.getParameter("deptno"));
        Emp emp=new Emp();
        emp.setEmpno(empno);
        emp.setEname(ename);
        emp.setJob(job);
        emp.setMgr(mgr);
        emp.setHiredate(hiredate);
        emp.setSal(sal);
        emp.setComm(comm);
        emp.setDeptno(deptno);
        Service service=new Service();
        int num=service.updateService(emp);
        if(num==0){
        }else{
            try {
                response.sendRedirect("getAll");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
public int updateService(Emp emp){
        return dao.updateDao(emp);
    }
public int updateDao(Emp emp) {
        Connection conn=NewUtil.getConnection();
        int num=0;
        String sql="update emp set ename=?,job=?,mgr=?,hiredate=?,sal=?,comm=?,deptno=? where empno=?";
        try {
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setString(1,emp.getEname());
            ps.setString(2,emp.getJob());
            ps.setInt(3,emp.getMgr());
            ps.setString(4,emp.getHiredate());
            ps.setInt(5,emp.getSal());
            ps.setInt(6,emp.getComm());
            ps.setInt(7,emp.getDeptno());
            ps.setInt(8,emp.getEmpno());
            num=ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            NewUtil.close(conn);
        }
        return num;
    }
public class GetoneServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf8");
        Service service=new Service();
        int empno=Integer.parseInt(request.getParameter("empno"));
        Emp emp=service.getOne(empno);
        request.setAttribute("emp",emp);
        try {
            request.getRequestDispatcher("update.jsp").forward(request,response);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public Emp getOne(int empno){
        return dao.getOne(empno);

    }
public Emp getOne(int empno) {
        Connection conn=NewUtil.getConnection();
        String sql="select * from emp where empno=?";
        Emp emp=null;
        try {
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setInt(1,empno);
            ResultSet rs=ps.executeQuery();
            while(rs.next()){
                emp=new Emp();
                String ename=rs.getString("ENAME");
                String job=rs.getString("JOB");
                int mgr=rs.getInt("MGR");
                String hiredate=rs.getString("HIREdate");
                int sal=rs.getInt("SAL");
                int comm=rs.getInt("COMM");
                int deptno=rs.getInt("DEPTNO");
                emp.setEmpno(empno);
                emp.setEname(ename);
                emp.setJob(job);
                emp.setMgr(mgr);
                emp.setHiredate(hiredate);
                emp.setSal(sal);
                emp.setComm(comm);
                emp.setDeptno(deptno);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            NewUtil.close(conn);
        }
        return emp;
    }

10.增加数据的配置文件

        add
        com.buka.edu.controller.AddServlet
    
    
        add
        /add
    

11.增加数据的页面
<%--
  Created by IntelliJ IDEA.
  User: HP
  Date: 9/1/2022
  Time: 下午3:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


empno:
ename:
job:
mgr:
hiredate:
sal:
comm:
deptno:

12.增加数据的Servlet类、Service类、dao类

增加数据里面的东西上面都有,还是从前台拿数据放到数据库中然后点击提交还是返回查询的那个页面。

public class AddServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=utf8");
        int empno=Integer.parseInt(request.getParameter("empno"));
        String ename=request.getParameter("ename");
        String job=request.getParameter("job");
        int mgr=Integer.parseInt(request.getParameter("mgr"));
        String hiredate=request.getParameter("hiredate");
        int sal=Integer.parseInt(request.getParameter("sal"));
        int comm=Integer.parseInt(request.getParameter("comm"));
        int deptno=Integer.parseInt(request.getParameter("deptno"));
        Emp emp=new Emp();
        emp.setEmpno(empno);
        emp.setEname(ename);
        emp.setJob(job);
        emp.setMgr(mgr);
        emp.setHiredate(hiredate);
        emp.setSal(sal);
        emp.setComm(comm);
        emp.setDeptno(deptno);
        Service service=new Service();
        int num=service.addService(emp);
        if(num==0){
        }else{
            try {
                response.sendRedirect("getAll");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
 public int addService(Emp emp){
        return dao.addDao(emp);
    }
public int addDao(Emp emp) {
        Connection connection=NewUtil.getConnection();
        String sql="insert into emp values(?,?,?,?,?,?,?,?)";
        int num=0;
        try {
            PreparedStatement ps=connection.prepareStatement(sql);
            ps.setInt(1,emp.getEmpno());
            ps.setString(2,emp.getEname());
            ps.setString(3,emp.getJob());
            ps.setInt(4,emp.getMgr());
            ps.setString(5,emp.getHiredate());
            ps.setInt(6,emp.getSal());
            ps.setInt(7,emp.getComm());
            ps.setInt(8,emp.getDeptno());
            num=ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            NewUtil.close(connection);
        }
        return num;
    }

五、运行的截图

 

 

 

 

 

 

 

 

 

 

 最后是我两个数据库的图片,其实这些代码也可以用框架来完成,我只不过是初学手,能写成这样我已经很满意了,来供大家参考

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/710694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号