Servlet+JDBC
主要实现对Product表的查看、删除和添加、该功能必须是在Admin管理员登录后才能查看、删除、添加Product表的信息
1.1 项目搭建
1.1.1mysql创建数据库–>SQLyog双击打开
CREATE DATABASE shopping CHARACTER SET utf8;
USE shopping;
CREATE TABLE product(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
price DOUBLE NOT NULL,
firstdate DATE NOT NULL
)CHARSET=utf8;
INSERT INTO product(NAME,price,firstdate) VALUES('且初身体乳',167,'2022-03-17');
INSERT INTO product(NAME,price,firstdate) VALUES('奥古斯汀巴德洗发水',578,'2022-02-18');
INSERT INTO product(NAME,price,firstdate) VALUES('MakeUpForEver粉底液',407,'2022-03-22');
INSERT INTO product(NAME,price,firstdate) VALUES('迪奥水桶包',28733,'2022-03-08');
INSERT INTO product(NAME,price,firstdate) VALUES('迪奥粉底液',6344.9,'2022-03-08');
CREATE TABLE admin(
NAME VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
)CHARSET=utf8;
INSERT INTO admin(NAME,PASSWORD) VALUES('libai','1111');
1.1.2
src下面创建包+src下面new–>Resource Bundle创建属性文件+web下面–>WEB-INF下面新建lib文件夹,导包,并且Add as Libaray
new–>Package–>entity (实体层)
new–>Package–>dao
new–>Package–>dao–>impl
new–>Package–>service
new–>Package–>service->impl
new–>Package–>controller
new–>Package–>jsp
new–>Package–>utils
new–>Package–>filter
1.1.3database.properties
注意位置在src同级目录下
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3308/shopping?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
initialSize=10//初始化大小
maxActivee=20//最大连接数
minIdle=5//最小连接数
maxWait=3000//最大等待时间
1.1.4 DbUtils
通用类,使用Druid连接池和事务
package text.frist.Emp.utils;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DbUtils {
public static DruidDataSource ds ;
public static final ThreadLocal<Connection> THREAD_LOCAL=new ThreadLocal<>();
static{
Properties properties = new Properties();
InputStream is = DbUtils.class.getResourceAsStream("/database.properties");
try {
properties.load(is);
ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection = THREAD_LOCAL.get();
if(connection==null){
try {
connection = ds.getConnection();
THREAD_LOCAL.set(connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
return connection;
}
//开始事务
public static void begin(){
Connection connection = null;
try {
connection = getConnection();
connection.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
//提交事务
public static void commit(){
Connection connection = null;
try {
connection =getConnection();
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}finally {
CloseAll(connection,null,null);
}
}
//回滚
public static void rollback(){
Connection connection = null;
try {
connection =getConnection();
connection.rollback();
} catch (SQLException e) {
e.printStackTrace();
}finally {
CloseAll(connection,null,null);
}
}
public static void CloseAll(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){
try {
if(connection!=null){
connection.close();
THREAD_LOCAL.remove();
}
if(preparedStatement!=null){
preparedStatement.close();
}
if(resultSet!=null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.1 实体层–>Product商品类+Admin管理员类
package text.frist.Emp.entity;
import java.util.Date;
public class Product {
private int id;
private String name;
private double price;
private Date firstdate;
public Product() {
}
public Product(int id, String name, double price, Date firstdate) {
this.id = id;
this.name = name;
this.price = price;
this.firstdate = firstdate;
}
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Date getFirstdate() {
return firstdate;
}
public void setFirstdate(Date firstdate) {
this.firstdate = firstdate;
}
@Override
public String toString() {
return "Product{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
", firstdate=" + firstdate +
'}';
}
}
package text.frist.Emp.entity;
public class Admin {
private String name;
private String password;
public Admin() {
}
public Admin(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Admin{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
3.dao层
3.1 ProductDao接口和AdminDao接口
import text.frist.Emp.entity.Product;
import java.util.List;
public interface ProductDao {
public int insert(Product product);
public int update(Product product);
public int delete(int id);
public Product select(int id);
public List<Product> selectAll();
}
package text.frist.Emp.dao;
import text.frist.Emp.entity.Admin;
public interface AdminDao {
public Admin select(String name);
}
3.2 ProductDaoImpl类(实现ProductDao)+AdminDaoImpl类(实现AdminDao)
主要实现对数据库的访问,提供增删改查的方法
3.2.1ProductDaoImpl类,实现对商品的增删改查
使用commons-dbutils包下的QueryRunner类实现增删改查
update()方法只要给connection、sql、Object[]三个参数
query()方法要给connection、sql、new BeanHandler<Product>(Product.class)或者new BeanListHandler<Product>(Product.class)三个参数
package text.frist.Emp.dao.impl;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import text.frist.Emp.dao.ProductDao;
import text.frist.Emp.entity.Product;
import text.frist.Emp.utils.DbUtils;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class ProductDaoImpl implements ProductDao {
private QueryRunner queryRunner = new QueryRunner();
@Override
public int insert(Product product) {
Object[] param = {product.getId(),product.getName(),product.getPrice(),product.getFirstdate()};
try {
int result = queryRunner.update(DbUtils.getConnection(),"insert into product(id,name,price,firstdate) values(?,?,?,?); ",param);
return result;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
@Override
public int update(Product product) {
Object[] param = {product.getName(), product.getPrice(), product.getFirstdate(), product.getId()};
try {
int result = queryRunner.update(DbUtils.getConnection(), "update product set name=?,price=?,firstdate=? where id = ?;", param);
return result;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
@Override
public int delete(int id) {
try {
int result = queryRunner.update(DbUtils.getConnection(), "delete from product where id=?", id);
return result;
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
@Override
public Product select(int id) {
Product product = null;
try {
product = queryRunner.query(DbUtils.getConnection(), "select *from product where id =?", new BeanHandler<Product>(Product.class), id);
return product;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List<Product> selectAll() {
List<Product> productList = new ArrayList<>();
try {
productList = queryRunner.query(DbUtils.getConnection(),"select *from product",new BeanListHandler<Product>(Product.class));
return productList;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
3.2.2 AdminDaoImpl类(实现AdminDao)
主要是实现查询管理员是否存在、实现登录查询
package text.frist.Emp.dao.impl;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import text.frist.Emp.dao.AdminDao;
import text.frist.Emp.entity.Admin;
import text.frist.Emp.utils.DbUtils;
import java.sql.SQLException;
public class AdminDaoImpl implements AdminDao {
private QueryRunner queryRunner = new QueryRunner();
@Override
public Admin select(String name) {
Admin admin = null;
try {
admin =queryRunner.query(DbUtils.getConnection(),"select *from admin where name=?",new BeanHandler<Admin>(Admin.class),name);
} catch (SQLException e) {
e.printStackTrace();
}
return admin;
}
}
4. service层–>ProductServiceImpl类+AdminServiceImpl类
4.1ProductServiceImpl类
实现添加商品、删除商品
package text.frist.Emp.serive.impl;
import text.frist.Emp.dao.ProductDao;
import text.frist.Emp.dao.impl.ProductDaoImpl;
import text.frist.Emp.entity.Product;
import text.frist.Emp.serive.ProductService;
import text.frist.Emp.utils.DbUtils;
import java.util.ArrayList;
import java.util.List;
public class ProductServiceImpl implements ProductService {
private ProductDao productDao = new ProductDaoImpl();
@Override
public int modify(Product product) {
int result = 0;
try {
DbUtils.begin();
result = productDao.update(product);
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return result;
}
@Override
public int remove(int id) {
int result = 0;
try {
DbUtils.begin();
result = productDao.delete(id);
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return result;
}
@Override
public Product show(int id) {
Product product = null;
try {
DbUtils.begin();
product = productDao.select(id);
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return product;
}
@Override
public int add(Product product) {
int result =0;
try {
DbUtils.begin();
result = productDao.insert(product);
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return result;
}
@Override
public List<Product> showAll() {
List<Product> productList = new ArrayList<>();
try {
DbUtils.begin();
productList = productDao.selectAll();
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return productList;
}
}
4.2 AdminServiceImpl类
实现管理员登录功能
package text.frist.Emp.serive.impl;
import text.frist.Emp.dao.AdminDao;
import text.frist.Emp.dao.impl.AdminDaoImpl;
import text.frist.Emp.entity.Admin;
import text.frist.Emp.serive.AdminService;
import text.frist.Emp.utils.DbUtils;
public class AdminServiceImpl implements AdminService {
private AdminDao adminDao =new AdminDaoImpl();
@Override
public Admin login(String username, String password) {
Admin admin = null;
try {
DbUtils.begin();
Admin temp = adminDao.select(username);
if(temp!=null){
if(temp.getPassword().equals(password)){
admin = temp;
}
}
DbUtils.commit();
} catch (Exception e) {
DbUtils.rollback();
e.printStackTrace();
}
return admin;
}
}
5.1在web目录下新建 login.html
当前项目路径(如我的路径是untitled1_war_exploded)查看方式
form标签提交的路径是管理员登录的Servlet,controller目录下右键new–>Create new Servlet,命名为AdminLoginController,注解@WebServlet(value=“admin/adminLoginController”)
验证码提交的路径是创建验证码的Servlet,controller目录下右键new–>Create new Servlet,命名为CreateCodeController,注解@WebServlet(value = “admin/createCodeController”)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/untitled1_war_exploded/admin/adminLoginController" method="post">
用户名:<input type="text" name="name"><br>
密码:<input type="password" name="password"><br>
验证码:<input type="text" name="inputVcode"><img src="/untitled1_war_exploded/admin/createCodeController"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
6.1 Servlet
在controller和jsp目录下新建
6.1.1 CreateCodeController创建验证码的Servlet
package text.frist.Emp.controller;
import cn.dsna.util.images.ValidateCode;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "CreateCodeController", value = "/admin/createCodeController")
public class CreateCodeController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ValidateCode code = new ValidateCode(100,30,5,10);
String codes =code.getCode();
HttpSession session = request.getSession();
session.setAttribute("codes",codes);
code.write(response.getOutputStream());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
6.1.2 AdminLoginController用户登录的Servlet
package text.frist.Emp.controller;
import text.frist.Emp.entity.Admin;
import text.frist.Emp.serive.AdminService;
import text.frist.Emp.serive.impl.AdminServiceImpl;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "AdminLoginController", value = "/admin/adminLoginController")
public class AdminLoginController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.收参
String name = request.getParameter("name");
String password = request.getParameter("password");
String inputVcode = request.getParameter("inputVcode");
HttpSession session = request.getSession();
String codes =(String)session.getAttribute("codes");
if((!inputVcode.isEmpty())&&inputVcode.equalsIgnoreCase(codes)){
AdminService adminService = new AdminServiceImpl();
Admin admin =adminService.login(name,password);
if(admin!=null){
HttpSession session1 = request.getSession();
session1.setAttribute("admin",admin);
response.sendRedirect(request.getContextPath()+"/admin/safe/showAllProductController" );
}else {
response.sendRedirect(request.getContextPath()+"/login.html");
}
}else {
response.sendRedirect(request.getContextPath()+"/login.html");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
6.1.3 ShowAllProductController展示所有商品的Servlet
package text.frist.Emp.controller;
import text.frist.Emp.entity.Product;
import text.frist.Emp.serive.ProductService;
import text.frist.Emp.serive.impl.ProductServiceImpl;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet(name = "ShowAllProductController", value = "/admin/safe/showAllProductController")
public class ShowAllProductController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ProductService productService = new ProductServiceImpl();
List<Product> productList = productService.showAll();
request.setAttribute("products", productList);
request.getRequestDispatcher("/admin/safe/showAllProductJSP").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
6.1.4 ShowAllProductJSP展示所有商品的JSP、并提供删除和添加方法
对商品实现增加和删除是通过 ?传递商品id、实现操作
package text.frist.Emp.jsp;
import text.frist.Emp.entity.Product;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@WebServlet(name = "ShowAllProductJSP",value = "/admin/safe/showAllProductJSP")
public class ShowAllProductJSP extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Product> productList =(List<Product>)request.getAttribute("products");
PrintWriter printWriter = response.getWriter();
printWriter.println("<html>");
printWriter.println("<head>");
printWriter.println("<meta charset='UTF-8'>");
printWriter.println("<title>所有商品显示</title>");
printWriter.println("</head>");
printWriter.println("<body>");
printWriter.println("<h1>欢迎您:</h1>");
printWriter.println("<table border='1'>");
printWriter.println("<tr>");
printWriter.println("<td>Id</td>");
printWriter.println("<td>Name</td>");
printWriter.println("<td>price</td>");
printWriter.println("<td>firstdate</td>");
printWriter.println("<td>删除</td>");
printWriter.println("<td>增加</td>");
printWriter.println("</tr>");
for (Product product : productList
) {
printWriter.println("<tr>");
printWriter.println("<td>" + product.getId() + "</td>");
printWriter.println("<td>" + product.getName() + "</td>");
printWriter.println("<td>" + product.getPrice()+ "</td>");
printWriter.println("<td>" +product.getFirstdate() + "</td>");
printWriter.println("<td><a href='"+request.getContextPath()+"/admin/safe/removeProductController?id="+product.getId()+"'>删除</a></td>");
printWriter.println("<td><a href='"+request.getContextPath()+"/admin/safe/addProductInfoJSP?id="+product.getId()+"'>增加</a></td>");
printWriter.println("</tr>");
}
printWriter.println("</table>");
printWriter.println("</body>");
printWriter.println("</html>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
6.1.5 filter过滤器,页面跳转时验证是否登录过,对每个页面进行编码
CharacterEncoding编码
package text.frist.Emp.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter(filterName = "CharacterEncoding",value = "/admin/*")
public class CharacterEncoding implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
CheckFilter验证是否登录过
package text.frist.Emp.filter;
import text.frist.Emp.entity.Admin;
import text.frist.Emp.serive.AdminService;
import text.frist.Emp.serive.impl.AdminServiceImpl;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter(filterName = "CheckFilter",value = "/admin/safe/*")
public class CheckFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
Admin admin =(Admin)session.getAttribute("admin");
if(admin!=null){
chain.doFilter(req, resp);
}else {
response.sendRedirect(request.getContextPath()+"/login.html");
}
}
public void init(FilterConfig config) throws ServletException {
}
}
7.1 实现商品的增和删
7.1.1 点击“增加”跳转到AddProductInfoJSP类
form表单把填写到input的信息post给AddProductController类
package text.frist.Emp.jsp;
import text.frist.Emp.entity.Product;
import text.frist.Emp.serive.ProductService;
import text.frist.Emp.serive.impl.ProductServiceImpl;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@WebServlet(name = "AddProductInfoJSP", value = "/admin/safe/addProductInfoJSP")
public class AddProductInfoJSP extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ProductService productService = new ProductServiceImpl();
List<Product> productList = productService.showAll();
PrintWriter printWriter = response.getWriter();
printWriter.println("<html>");
printWriter.println("<head>");
printWriter.println("<meta charset='utf-8'>");
printWriter.println("<title>增加商品</title>");
printWriter.println("</head>");
printWriter.println("<body>");
printWriter.println("<form action='/untitled1_war_exploded/admin/safe/addProductController' method='post'>");
printWriter.println("商品id:<input type='text' name='id' value='"+(productList.size()+1)+"'><br/> ");
printWriter.println("商品名:<input type='text' name='name' value=''><br/> ");
printWriter.println("商品价格:<input type='text' name='price' value=''> <br/>");
printWriter.println("商品日期:<input type='text' name='firstdate' value=''> <br/>");
printWriter.println("<input type='submit' value='增加'>");
printWriter.println("</from>");
printWriter.println("</body>");
printWriter.println("</html>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
7.1.2 AddProductController类增加商品的Servlet
package text.frist.Emp.controller;
import text.frist.Emp.dao.ProductDao;
import text.frist.Emp.dao.impl.ProductDaoImpl;
import text.frist.Emp.entity.Product;
import text.frist.Emp.serive.ProductService;
import text.frist.Emp.serive.impl.ProductServiceImpl;
import text.frist.Emp.utils.DateUtils;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Date;
@WebServlet(name = "AddProductController", value = "/admin/safe/addProductController")
public class AddProductController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.收参
Integer id = Integer.valueOf(request.getParameter("id"));
String name = request.getParameter("name");
double price = Double.parseDouble(request.getParameter("price"));
Date firstDate = DateUtils.StrToUtil(request.getParameter("firstdate"));
Product product = new Product(id, name, price, DateUtils.UtilToSql(firstDate));
ProductService productService = new ProductServiceImpl();
productService.add(product);
response.sendRedirect(request.getContextPath() + "/admin/safe/showAllProductController");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
7.1.3 点击“删除”,则删除商品的RemoveProductController类
package text.frist.Emp.controller;
import text.frist.Emp.serive.ProductService;
import text.frist.Emp.serive.impl.ProductServiceImpl;
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 = "RemoveProductController",value = "/admin/safe/removeProductController")
public class RemoveProductController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer id=Integer.valueOf(request.getParameter("id"));
ProductService productService = new ProductServiceImpl();
int result = productService.remove(id);
if(result!=0){
request.getRequestDispatcher("/admin/safe/showAllProductController").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}