100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 简单增删查改案例jdbc + Servlet + jsp

简单增删查改案例jdbc + Servlet + jsp

时间:2023-03-14 16:41:04

相关推荐

简单增删查改案例jdbc + Servlet + jsp

1.创建数据库

1.1数据字典

1.2数据库新建user表

create table t_user(id int(11) primary key auto_increment,username varchar(20) unique not null,password varchar(32) ,email varchar(200))charset=utf8;

1.3初始化数据

insert into t_user values(1,'李四','12345','149@');insert into t_user values(2,'张三','12345','149@');insert into t_user values(3,'tom','12345','149@');insert into t_user values4,'jack','12345','149@');

2编写代码

新建javaee项目导入jar包和创建druid.properties配置文件

2.1创建项目

整个项目目录结构

2.2导包写工具类

在src目录下创建Utils工具包编写数据库连接工具

Env.java

package utlis;import java.io.IOException;import java.util.Properties;//通过单例设计模式读取配置文件的信息public class Env extends Properties {//单例设计模式的写法private static Env instance = null;private Env(){try {load(Env.class.getResourceAsStream("/druid.properties"));} catch (IOException e) {e.printStackTrace();}}public static Env getInstance(){if(instance == null){instance = new Env();}return instance;}}

在src包下创建test包测试Env

EnvTest.java

package test;import org.junit.Test;import utlis.Env;import static org.junit.Assert.*;public class EnvTest {@Testpublic void getInstance() {System.out.println(Env.getInstance().getProperty("url"));}}

编写数据库工具类

DBPoolUtil.java

package utlis;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.util.Properties;public class DBPoolUtil {//创建DateSource资源private static DruidDataSource dataSource = null;static {Properties p = new Properties();try {dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(p);//通过Env读取配置文件dataSource.setDriverClassName(Env.getInstance().getProperty("driverClassName"));dataSource.setUrl(Env.getInstance().getProperty("url"));dataSource.setUsername(Env.getInstance().getProperty("username"));dataSource.setPassword(Env.getInstance().getProperty("password"));} catch (Exception e) {e.printStackTrace();}}public static DataSource getDataSource(){return dataSource;}}

2.3 IDEA连接数据库

(可不实现这一步骤)

测试连接出现问题(是因为没有设置时区)

解决方法

/qq_31762741/article/details/115184255

问题解决好后点击应用

2.4创建实体类

在src目录下创建entity包后在数据库中自动生成实体类

在entity包中创建User类

package entity;public class User {private int id;private String username;private String password;private String email;public User() {}public User(int id, String username, String password, String email) {this.id = id;this.username = username;this.password = password;this.email = email;}public long getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", email='" + email + '\'' +'}';}}

2.5 创建dao层

在src下创建dao包在包下创建Impl包和IUser接口

接口IUserDao.java

package dao;import entity.User;import java.util.List;public interface IUserDao {//查所有List<User> getAll();//分页查List<User> getByPage(int cp,int ns);//根据id查User getById(int id);//增加int save(User user);//修改int update(User user);//删除int delete(int id);//查询数量long getCount();}

Impl包下的IUserDaoImpl实现类

package dao.impl;import dao.IUserDao;import entity.User;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanHandler;import mons.dbutils.handlers.BeanListHandler;import mons.dbutils.handlers.ScalarHandler;import utlis.DBPoolUtil;import java.sql.SQLException;import java.util.List;public class IUserDaoImpl implements IUserDao {QueryRunner qr = new QueryRunner(DBPoolUtil.getDataSource());@Overridepublic List<User> getAll() {try {return qr.query("select * from t_user ",new BeanListHandler<User>(User.class));} catch (SQLException throwables) {throwables.printStackTrace();}return null;}@Overridepublic List<User> getByPage(int cp,int ns) {int si = (cp - 1) * ns;try {return qr.query("select * from t_user limit ?,?",new BeanListHandler<User>(User.class),si,ns);} catch (SQLException throwables) {throwables.printStackTrace();}return null;}@Overridepublic User getById(int id) {try {return qr.query("select * from t_user where id = ?",new BeanHandler<User>(User.class),id);} catch (SQLException throwables) {throwables.printStackTrace();}return null;}@Overridepublic int save(User user) {try {return qr.update("insert into t_user values(?,?,?,?)",user.getId(),user.getUsername(),user.getPassword(),user.getEmail());} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}@Overridepublic int update(User user) {try {return qr.update("update t_user set username =?, password = ?,email =? where id =?",user.getUsername(),user.getPassword(),user.getEmail(),user.getId());} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}@Overridepublic int delete(int id) {try {return qr.update("delete from t_user where id = ?",id);} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}@Overridepublic long getCount() {try {return qr.query("select count(1) from t_user",new ScalarHandler<>());} catch (SQLException throwables) {throwables.printStackTrace();}return 0;}}

test包下的IUserDaoImplTest类

package test;import dao.IUserDao;import dao.impl.IUserDaoImpl;import entity.User;import org.junit.Test;import java.util.List;import static org.junit.Assert.*;public class IUserDaoImplTest {private IUserDaoImpl iUserDao = new IUserDaoImpl();@Testpublic void getAll() {List<User> list = iUserDao.getAll();for (User user : list) {System.out.println(user);}}@Testpublic void getByPage() {List<User> list = iUserDao.getByPage(1,3);for (User user : list) {System.out.println(user);}}@Testpublic void getById() {User user = iUserDao.getById(1);System.out.println(user);}@Testpublic void save() {User user = new User(5,"猪猪","1235","hhi@com");int save = iUserDao.save(user);System.out.println(save);}@Testpublic void update() {User user = new User(5,"猪猪boy","1235","hhi@com");int update = iUserDao.update(user);System.out.println(update);}@Testpublic void delete() {int delete = iUserDao.delete(5);System.out.println(delete);}@Testpublic void getCount() {long count = iUserDao.getCount();System.out.println(count);}}

2.6创建service层

在src包下创建Service包 创建IUserService接口和impl包

接口IUserService.java

package service;import entity.User;import java.util.List;public interface IUserService {//查所有List<User> getAll();//分页查List<User> getByPage(int cp,int ns);//根据id查User getById(int id);//增加boolean save(User user);//修改boolean update(User user);//删除boolean delete(int id);//查询数量long getCount();}

在impl包下创建实体类

IUserServiceImpl.java

package service.impl;import dao.IUserDao;import dao.impl.IUserDaoImpl;import entity.User;import service.IUserService;import java.util.List;public class IUserServiceImpl implements IUserService {private IUserDao iUserDao = new IUserDaoImpl();@Overridepublic List<User> getAll() {return iUserDao.getAll();}@Overridepublic List<User> getByPage(int cp, int ns) {return iUserDao.getByPage(cp,ns);}@Overridepublic User getById(int id) {return iUserDao.getById(id);}@Overridepublic boolean save(User user) {return iUserDao.save(user)>0;}@Overridepublic boolean update(User user) {return iUserDao.update(user)>0;}@Overridepublic boolean delete(int id) {return iUserDao.delete(id)>0;}@Overridepublic long getCount() {return iUserDao.getCount();}}

2.7 创建测试类

创建单元测试类IUserServiceImplTest.java

package test;import entity.User;import org.junit.Test;import service.impl.IUserServiceImpl;import java.util.List;public class IUserServiceImplTest {private IUserServiceImpl iUserService = new IUserServiceImpl();@Testpublic void getAll() {List<User> list = iUserService.getAll();for (User user : list) {System.out.println(user);}}@Testpublic void getByPage() {List<User> list = iUserService.getByPage(1,3);for (User user : list) {System.out.println(user);}}@Testpublic void getById() {User byId = iUserService.getById(1);System.out.println(byId);}@Testpublic void save() {boolean save = iUserService.save(new User(6, "杰克", "12345", "ajjj@"));System.out.println(save);}@Testpublic void update() {boolean update = iUserService.update(new User(6, "杰克666", "12345", "ajjj@"));System.out.println(update);}@Testpublic void delete() {boolean delete = iUserService.delete(6);System.out.println(delete);}@Testpublic void getCount() {long count = iUserService.getCount();System.out.println(count);}}

2.8创建fifter包

CharacterFilter.java

package filter;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOException;@WebFilter(filterName = "CharacterFilter",value = "/*")public class CharacterFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=UTF-8");chain.doFilter(req, resp);}public void init(FilterConfig config) throws ServletException {}}

2.9创建controller包

创建BaseServlet.java

package controller;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class BaseServlet extends HttpServlet {@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {String op = req.getParameter("op");if(op == null){op = "getAll";}if(op != null){try {Method method = getClass().getDeclaredMethod(op, HttpServletRequest.class, HttpServletResponse.class);method.setAccessible(true);method.invoke(this,req,res);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}}

3.整合前端页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>$Title$</title></head><body><a href="UserServlet">all User</a></p></body></html>

修改Tomcat的名字和默认路径

3.1导包(JSTL使用)

导入jstl所需要的jar包

3.2 查找所有

UserServlet.java

package controller;import entity.User;import service.IUserService;import service.impl.IUserServiceImpl;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(name = "UserServlet",value = "/UserServlet")public class UserServlet extends BaseServlet{private IUserService iUserService = new IUserServiceImpl();protected void getAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String op = req.getParameter("op");req.setAttribute("op",op);//得到数据库中的用户信息List<User> list = iUserService.getAll();//将用户信息保存在域中req.setAttribute("Users",list);//页面转发到users.jsp页面 查找用页面转发需要共享数据 增删改用重定向req.getRequestDispatcher("users.jsp").forward(req,resp);}}

3.2.1

在web目录下新建pages包存放jsp页面

新建users.jsp页面 table的属性样式一定要正确不然出不来

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core"%><html><head><title>users</title></head><body><c:if test="${users == null || users.size()==0}">no date</c:if><c:if test="${users != null || users.size()!=0}"><table border="1" align="center" width="80%"><tr><th>id</th><th>name</th><th>password</th><th>email</th><th>manger</th></tr><c:forEach items="${users}" var="p"><tr><td>${p.id}</td><td>${p.username}</td><td>${p.password}</td><td>${p.email}</td><td><a href="#">修改</a><a href="#">删除</a></td></tr></c:forEach></table></c:if></body></html>

3.2.2实现效果

3.3修改操作

3.3.1首先修改users.jsp页面修改的链接地址

<a href="UserServlet?op=getById&id=${p.id}">修改</a>

3.3.2在web/pages/user包下添加user.jsp

<%--Created by IntelliJ IDEA.User: ylkDate: /8/27Time: 16:21To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>user</title></head><body><form method="post" action="UserServlet"><input type="hidden" name="op" value="update"></p>id:<input type="text" name="id" value="${user.id}" readonly="readonly"></p>username:<input type="text" name="name" value="${user.username}"></p>Password:<input type="text" name="password" value="${user.password}"></p>email:<input type="text" name="email" value="${user.email}"></p><input type="submit" value="修改"></p></form></body></html>

3.3.3在UserServlet.java中添加通过id查找和修改的方法

protected void getById(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//从页面获取id的值String id = req.getParameter("id");int byId = id ==null?0:Integer.parseInt(id);//调用service层获取User对象User user = iUserService.getById(byId);//把对象保存到域中req.setAttribute("user",user);//页面转发到到/pages/user/user.jspreq.getRequestDispatcher("/pages/user/user.jsp").forward(req, resp);}protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id = req.getParameter("id");int id2 = id ==null ? 0 : Integer.parseInt(id);String name = req.getParameter("name");String password = req.getParameter("password");String email = req.getParameter("email");boolean update = iUserService.update(new User(id2, name, password, email));if(update){resp.sendRedirect("UserServlet");}}

3.4删除操作

3.4.1首先修改users.jsp页面修改的链接地址

<a href="UserServlet?op=delete&id=${p.id}">删除</a>

3.4.2添加删除方法

protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id = req.getParameter("id");int id2 = id ==null ? 0 : Integer.parseInt(id);boolean delete = iUserService.delete(id2);if(delete){resp.sendRedirect("UserServlet");}

3.5添加操作

3.5.1添加超链接语句

<a href="/demo/pages/user/saveUser.jsp">添加</a>

3.5.2在web/pages/user包下添加saveUser.jsp

<%--Created by IntelliJ IDEA.User: ylkDate: /8/27Time: 16:43To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>saveUser</title></head><body><form method="post" action="../../UserServlet"><input type="hidden" name="op" value="save"></p>id:<input type="text" name="id" ></p>username:<input type="text" name="name" ></p>Password:<input type="text" name="password" ></p>email:<input type="text" name="email" ></p><input type="submit" value="添加"></p></form></body></html>

3.5.3在UserServlet中添加方法

protected void save(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id = req.getParameter("id");int id2 = id ==null ? 0 : Integer.parseInt(id);String name = req.getParameter("name");String password = req.getParameter("password");String email = req.getParameter("email");boolean save = iUserService.save(new User(id2, name, password, email));if(save){resp.sendRedirect("UserServlet");}}le></head><body><form method="post" action="../../UserServlet"><input type="hidden" name="op" value="save"></p>id:<input type="text" name="id" ></p>username:<input type="text" name="name" ></p>Password:<input type="text" name="password" ></p>email:<input type="text" name="email" ></p><input type="submit" value="添加"></p></form></body></html>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。