第二十四天 Servlet+jsp+mysql+navicat的增删改查以及视图

该博客详细介绍了如何使用Servlet、JSP、MySQL数据库和Navicat工具进行增删改查操作,重点讨论了实体类与数据库表的映射关系,为Web应用程序的基础操作提供了清晰的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.entity包放的是实体类,也就是实体类的属性与数据库中的表中的字段名(就是所谓的列名),进行映射的关系。

create database test02 default character set gbk;
use test02
create table person(
id int primary key auto_increment,
name varchar(20),
salary varchar(20),
age varchar(2)
);
insert into person (name,salary,age) values("猪八戒","12321","12");
jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=gbk
package com.entity;
/**
 * 项目名称:web04    
 * 类名称:Person    
 * 类描述:  存储数据库中的信息,实体类中的属性对应数据库值的字段    
 * 创建人:Administrator    
 * 创建时间:2017年5月30日 下午12:38:12    
 * 修改人:Administrator    
 * 修改时间:2017年5月30日 下午12:38:12    
 * 修改备注:    
 * @version     
 *
 */
public class Person {
    private int id;
    private String name;
    private String salary;
    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 getSalary() {
        return salary;
    }
    public void setSalary(String salary) {
        this.salary = salary;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((age == null) ? 0 : age.hashCode());
        result = prime * result + id;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((salary == null) ? 0 : salary.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (age == null) {
            if (other.age != null)
                return false;
        } else if (!age.equals(other.age))
            return false;
        if (id != other.id)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (salary == null) {
            if (other.salary != null)
                return false;
        } else if (!salary.equals(other.salary))
            return false;
        return true;
    }
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", salary=" + salary + ", age=" + age + "]";
    }
    
}
2.dao层有关数据库操作的接口和实现类

package com.dao;

import java.sql.SQLException;
import java.util.List;

import com.entity.Person;

/**
 * 项目名称:web04    
 * 类名称:PersonDao    
 * 类描述:完成数据库操作的业务处理    
 * 创建人:Administrator    
 * 创建时间:2017年5月30日 下午12:51:48    
 * 修改人:Administrator    
 * 修改时间:2017年5月30日 下午12:51:48    
 * 修改备注:    
 * @version     
 */
public interface PersonDao {
       //查看
       public List<Person> findAll() throws ClassNotFoundException, SQLException;
       //添加
       public void Save(Person p) throws ClassNotFoundException, SQLException;
       //根据用户id查找用户
       public Person findById(int id) throws ClassNotFoundException, SQLException;
       //根据用户id修改用户
       public void update(Person p) throws ClassNotFoundException, SQLException;
       //删除
       public void delete(int id) throws ClassNotFoundException, SQLException;
}
package com.dao;

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

import com.entity.Person;
import com.util.DBUtils;

public class PersonDaoImpl implements PersonDao {

    @Override
    public List<Person> findAll() {
        // TODO Auto-generated method stub
        //构造集合建立数据库链接
        List<Person> lists=new ArrayList<Person>();
        Connection conn = null;
        try {
            conn = DBUtils.getConn();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String sql="select id,name,salary,age  from person";
        Statement st=null;
        try {
            st = conn.createStatement();
            ResultSet rs=st.executeQuery(sql);
            while(rs.next()){
                Person p=new Person();
                p.setId(rs.getInt(1));
                p.setName(rs.getString(2));
                p.setSalary(rs.getString(3));
                p.setAge(rs.getString(4));
                lists.add(p);
            }
            DBUtils.closeConn(conn);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return lists;
    }
    //增加用户的方法
    @Override
    public void Save(Person p) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
   
        Connection conn=DBUtils.getConn();
        String sql="insert into person(name,salary,age) values(?,?,?)";
        PreparedStatement ps=conn.prepareStatement(sql);
        ps.setString(1, p.getName());
        ps.setString(2, p.getSalary());
        ps.setString(3, p.getAge());
        ps.executeUpdate();
        DBUtils.closeConn(conn);
    }

    //根据id查找用户
    @Override
    public Person findById(int id) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
         Connection conn=DBUtils.getConn();
         String sql="select * from person where id='"+id+"'";
         Statement st=conn.createStatement();
         
         ResultSet rs=st.executeQuery(sql);
         Person p = new Person();
         while(rs.next()){
             String name=rs.getString("name");
             String salary=rs.getString("salary");
             String age=rs.getString("age");
             p.setId(id);
             p.setName(name);
             p.setAge(age);
             p.setSalary(salary);
         }
         return p;
    }
     //根据所传用户修该数据库用户信息
    @Override
    public void update(Person p) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        Connection conn=DBUtils.getConn();
        String sql="update person set name='"+p.getName()+"',salary='"+p.getSalary()+"',age='"+p.getAge()+"'  where id='"+p.getId()+"'";
        Statement st=conn.createStatement();
        st.executeUpdate(sql);
    }
    //根据id删除用户
    @Override
    public void delete(int id) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        Connection conn=DBUtils.getConn();
        String sql="delete from person where id='"+id+"'";
        Statement st=conn.createStatement();
        st.executeUpdate(sql);
        DBUtils.closeConn(conn);
    }

}

3.service层,逻辑操作的接口以及实现类

package com.service;

import java.sql.SQLException;
import java.util.List;

import com.entity.Person;

//有关person的业务逻辑接口
public interface PersonService {
    //查看
    public List<Person> findAll() throws ClassNotFoundException, SQLException;
    //添加
    public void save(Person p) throws ClassNotFoundException, SQLException;
    //根据用户id查找用户
    public Person findById(int id) throws ClassNotFoundException, SQLException;
    //根据用户id修改用户
    public void update(Person p) throws ClassNotFoundException, SQLException;
    //删除
    public void delete(int id) throws ClassNotFoundException, SQLException;
}
package com.service;

import java.sql.SQLException;
import java.util.List;

import com.dao.PersonDao;
import com.entity.Person;

public class PersonServiceImpl implements PersonService {
    //可以创建子类对象指向父类引用,多态的形式
    
    private PersonDao dao;
    public PersonServiceImpl(PersonDao dao) {
        this.dao = dao;
    }
    @Override
    public List<Person> findAll() throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        return dao.findAll();
    }

    @Override
    public void save(Person p) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        dao.Save(p);
    }

    @Override
    public Person findById(int id) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        return dao.findById(id);
    }

    @Override
    public void update(Person p) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        dao.update(p);
    }

    @Override
    public void delete(int id) throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        dao.delete(id);
    }
}

4.web层,Servlet类,负责把Service和jsp连接

package com.web;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.PersonDao;
import com.dao.PersonDaoImpl;
import com.entity.Person;
import com.service.PersonService;
import com.service.PersonServiceImpl;
//将数据显示在浏览器页面
@SuppressWarnings("serial")
public class PersonServlet  extends HttpServlet{
    protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
        //设置请求响应的编码
        request.setCharacterEncoding("GBK");
        response.setContentType("text/html;charset=GBK");
        //获取uri,也就是请求的方式
        String uri=request.getRequestURI();
        String path=uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
        //实例化一个PersonDao接口实现类的对象
        PersonDao dao=new PersonDaoImpl();
        PersonService service=new PersonServiceImpl(dao);
        if(path.equals("/list")){
            try {
                List<Person> lists=service.findAll();
                request.setAttribute("lists", lists);
                //转发
//                RequestDispatcher dispatcher=request.getRequestDispatcher("list.jsp");
//                dispatcher.forward(request, response);
                request.getRequestDispatcher("WEB-INF/list.jsp").forward(request, response);
                
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ServletException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else if(path.equals("/add")){
            Person p=new Person();
            p.setName( request.getParameter("name"));
            p.setAge(request.getParameter("age"));
            p.setSalary(request.getParameter("salary"));
           // out.println("<h1>用户添加成功!</h1>");
            try {
            service.save(p);
                response.sendRedirect("list.do");
//            request.getRequestDispatcher("WEB-INF/list.jsp").forward(request, response);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else if(path.equals("/regist")){
            //转发是同一个服务器的容器中一个组件向另外的一个组件发送请求
            request.getRequestDispatcher("WEB-INF/index.jsp").forward(request, response);
               //重定向是直接访问地址
            //response.sendRedirect("WEB-INF/index.jsp");
        }else if(path.equals("/delete")){
            try {
                service.delete(Integer.parseInt(request.getParameter("deleteId")));
                response.sendRedirect("list.do");
                
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else if(path.equals("/modify")){
                try {
                 Person p= dao.findById(Integer.parseInt(request.getParameter("modifyId")));
                 request.setAttribute("person", p);
                 request.getRequestDispatcher("WEB-INF/modify.jsp").forward(request, response);;
                } catch (NumberFormatException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }else if(path.equals("/update")){
                Person p=new Person();
                p.setId(Integer.parseInt(request.getParameter("id")));
                p.setName(new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK"));
              //  p.setName(request.getParameter("name"));
                p.setAge(request.getParameter("age"));
                p.setSalary(request.getParameter("salary"));
               
                try {
                    service.update(p);
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                response.sendRedirect("list.do");
        }else if(path.equals("/view")){
               try {
                Person p= service.findById(Integer.parseInt(request.getParameter("viewId")));
                   request.setAttribute("person" ,p); 
                   request.getRequestDispatcher("WEB-INF/view.jsp").forward(request, response);
               } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
}

5.utitl有关工具


package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//与数据库有关操作的工具类
public class DBUtils {
    public static Connection getConn() throws ClassNotFoundException, SQLException{
         Class.forName("com.mysql.jdbc.Driver");
         Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test02?useUnicode=true&characterEncoding=GBK","root","1234");
         return conn;   
    }
    public static void  closeConn(Connection conn) throws SQLException{
        if(conn!=null){
            conn.close();
        }
    }
}

6.四张WEB-INF下的jsp页面依次为index注册,list显示用户.modify修改用户.view显示某个用户的视图

<%@ page language="java" import="java.util.*,java.text.* "  pageEncoding="GBK"%>

<%
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%>">
    <%
    	Date date=new Date();	
    	SimpleDateFormat st=new SimpleDateFormat("yyyy-MM-dd");
    	st.format(date);
     %>
    
    <title>用户注册界面</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
   
  <body>	
  		<h1>用户注册界面(<%=st.format(date)%>)</h1>
		<form action="add.do" method="post" >
			<table border="1px">
				<tr>
					<td>name:</td><td><input type="text" name="name"/></td>
				</tr>
				<tr>
					<td>salary:</td><td><input type="text" name="salary"/></td>
				</tr>
				<tr>
					<td>age:</td><td><input type="text" name="age"/></td>
				</tr>			
				<tr>
					<td colspan="2"><input type="submit" value="提交"/></td>
				</tr>
			</table>
		</form>
  </body>
</html>

<%@ page language="java" import="java.util.*,com.entity.*" pageEncoding="GBK" contentType="text/html;charset=GBK"%>
<%
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>My JSP 'list.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<h1>用户信息表</h1>
    	<table border="1px">
    		<tr>
				<td><id>id</id></td>
				<td><name>name</name></td>
				<td><age>age</age></td>
				<td><salary>salary</salary></td>
				<td><delete>delete</delete></td>
				<td><update>update</update></td>   		
    		</tr>
    		<%
		    	List<Person> lists=(List<Person>)request.getAttribute("lists");
		    	Iterator<Person> it=lists.iterator();
				while(it.hasNext()){
		    			Person p=it.next();
		    			int id=p.getId();
		    			String name=p.getName();
		    			String salary=p.getSalary();
		    			String age=p.getAge();
				%>
				<tr><td><%=id%></td><td><a href="view.do?viewId=<%=id%>"><%=name%></a></td><td><%= age%></td><td><%= salary%></td><td><a href="delete.do?deleteId=<%=id%>">delete</a></td><td><a href="modify.do?modifyId=<%=id %>">update</a></td></tr>	
    			<%
    				}
    			 %>
    	
    	</table>
    	<h1><a href="regist.do">继续注册!</a></h1>
  </body>
</html>

<%@ page language="java" import="java.util.*,com.entity.*" pageEncoding="GBK" %>
<%
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%>"s>
    
    <title>My JSP 'list.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<h1>修改用户信息</h1>
  	<form action="update.do">
    	<table border="1px">
    		<tr>
				<td>id</td>
				<td>name</td>
				<td>age</td>
				<td>salary</td>
				<td  rowspan="2"> <input type="submit" value="提交"/></td>   	
    		</tr>
    			<%
		    	Person p =(Person)request.getAttribute("person");
		    			int id=p.getId();
		    			String name=p.getName();
		    			String salary=p.getSalary();
		    			String age=p.getAge();
				%>
				<tr><td><input type="text" name="id" value=<%=id%>></td><td><input type="text" name="name" value=<%=name%>></td><td><input type="text" name="age" value=<%= age%>></td><td><input type="text" name="salary" value=<%= salary%>></td></tr>	
    	</table>
    </form>
  </body>
</html>

<%@ page language="java" import="java.util.*" import="com.entity.*" pageEncoding="GBK"%>
<%
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>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  		<h1>用户信息视图</h1>
		<table border="1px">
    		<tr>
				<td>id</td>
				<td>name</td>
				<td>age</td>
				<td>salary</td>
    		</tr>
    			<%
		    	Person p =(Person)request.getAttribute("person");
		    			int id=p.getId();
		    			String name=p.getName();
		    			String salary=p.getSalary();
		    			String age=p.getAge();
				%>
				<tr><td><input type="text"   disabled="disabled" name="id" value=<%=id%>></td><td><input type="text"  disabled="disabled" name="name" value=<%=name%>></td><td><input type="text" name="age"   disabled="disabled" value=<%= age%>></td><td><input type="text"   disabled="disabled" name="salary" value=<%= salary%>></td></tr>	
    	</table>
    		<a href="list.do">返回用户列表</a>
  </body>
</html>

8.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>myWeb</servlet-name>
    <servlet-class>com.web.PersonServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>myWeb</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <error-page>
    <error-code>405</error-code>
    <location>/error.html</location>
  </error-page>
</web-app>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值