一、代码实现
登录成功页(main.jsp)
1、负责接收LoginAction中写入的session,确认是否登录成功,如果登录失败,重定向到登录页(index.jsp) 2、负责链接至显示所有商品(FindProductsAction)以及显示所有订单(FindOrdersAction)的Servlet
< % --
Created by IntelliJ IDEA.
User: lazytom
Date: 2020 / 9 / 17
Time: 8 : 52
To change this template use File | Settings | File Templates.
-- % >
< % @ page contentType= "text/html;charset=UTF-8" language= "java" % >
< html>
< head>
< title> 登录成功页< / title>
< / head>
< body>
< %
if ( session. getAttribute ( "User" ) == null) {
response. sendRedirect ( "index.jsp" ) ;
return ;
}
% >
< p>
< a href= "/findProducts.do" > 显示所有产品< / a> < br/ >
< a href= "findOrders.do" > 显示所有订单< / a> < br/ >
< / p>
< / body>
< / html>
显示所有产品 (FindProductAction)
调用业务逻辑,返回所有产品信息,将结果写入session后,重定向至产品页(products.jsp)
package com. lazy. servlet;
import com. lazy. domain. Product;
import com. lazy. service. ProductService;
import javax. servlet. ServletException;
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;
public class FindProductAtcion extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ProductService ps = new ProductService ( ) ;
List< Product> data = ps. findByAll ( ) ;
HttpSession session = request. getSession ( ) ;
session. setAttribute ( "productdata" , data) ;
response. sendRedirect ( "products.jsp" ) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doGet ( req, resp) ;
}
}
产品页(product.jsp)
1、提供以产品名模糊查询功能 (CXProductAction) 2、获取FindProductAction中传递的session对象,将其遍历输出 3、由于产品表中的产品类型是采用的外键依赖形式,将其设置为超链接,点击超链接调用FindPTypeProudctAtcion使其只显示同种类型的产品
< % @ page import = "com.lazy.domain.Product" % >
< % @ page import = "java.util.List" % >
< % @ page import = "java.util.ArrayList" % > < % --
Created by IntelliJ IDEA.
User: lazytom
Date: 2020 / 9 / 22
Time: 8 : 42
To change this template use File | Settings | File Templates.
-- % >
< % @ page contentType= "text/html;charset=UTF-8" language= "java" % >
< html>
< head>
< title> Title< / title>
< / head>
< body>
< form name= "cx" action= "cxProduct.do" method= "post" >
< input type= "text" id= "productname" name= "pname" placeholder= "请输入查询产品名称" >
< input type= "submit" value= "查询" >
< / form>
< table border= "1" >
< tr>
< td> 产品编码< / td>
< td> 产品名称< / td>
< td> 产品类型< / td>
< td> 产品价格< / td>
< td> 操作< / td>
< / tr>
< %
List< Product> data = ( ArrayList) session. getAttribute ( "productdata" ) ;
for ( Product p : data) {
% >
< tr>
< td> < %= p. getPid ( ) % > < / td>
< td> < %= p. getPname ( ) % > < / td>
< td> < a href= "findPTypeProduct.do?ptid=<%= p.getPtid().getPtid() %> " > < %= p. getPtid ( ) . getPtname ( ) % > < / a> < / td>
< td> < %= p. getPprice ( ) % > < / td>
< td> 添加< / td>
< / tr>
< %
}
% >
< / table>
< / body>
< / html>
名称模糊查询(CXProductAction)
首先获取输入框中的产品名称,调用业务逻辑,将结果写入session,重定向 (老套路了)
package com. lazy. servlet;
import com. lazy. domain. Product;
import com. lazy. service. ProductService;
import javax. servlet. ServletException;
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;
public class CXProductAction extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request. setCharacterEncoding ( "UTF-8" ) ;
String pname = request. getParameter ( "pname" ) ;
ProductService ps = new ProductService ( ) ;
List< Product> data = ps. findByProductName ( pname) ;
HttpSession session = request. getSession ( ) ;
session. setAttribute ( "productdata" , data) ;
response. sendRedirect ( "products.jsp" ) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doGet ( req, resp) ;
}
}
根据产品类型显示(FindPTypeProductAction)
package com. lazy. servlet;
import com. lazy. domain. Product;
import com. lazy. service. ProductService;
import javax. servlet. ServletException;
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;
public class FindPTypeProductAction extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ptid = request. getParameter ( "ptid" ) ;
ProductService ps = new ProductService ( ) ;
List< Product> data = ps. findByProductType ( ptid) ;
HttpSession session = request. getSession ( ) ;
session. setAttribute ( "productdata" , data) ;
response. sendRedirect ( "products.jsp" ) ;
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doGet ( req, resp) ;
}
}
显示所有订单
package com. lazy. servlet;
import javax. servlet. ServletException;
import javax. servlet. http. HttpServlet;
import javax. servlet. http. HttpServletRequest;
import javax. servlet. http. HttpServletResponse;
import java. io. IOException;
public class FindOrdersAction extends HttpServlet {
@Override
protected void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost ( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this . doGet ( req, resp) ;
}
}
产品业务逻辑(ProductService)
根据pid进行查询(findByProductId) 根据ptid进行查询(findByProductType) 根据pname进行查询(findByProductName) 查询所有信息(findByAll)
package com. lazy. service;
import com. lazy. domain. PType;
import com. lazy. domain. Product;
import com. lazy. tools. DBHelper;
import java. util. ArrayList;
import java. util. List;
import java. util. Map;
public class ProductService {
private String sql = "" ;
public Product findByProductId ( String pid) {
sql = "select p.pid,p.pcode,p.pname,pt.ptid,pt.ptname,p.pprice,p.addtime " +
"from products p " +
"INNER JOIN ptype pt " +
"on p.ptid = pt.ptid where p.pid=" + pid;
List< Map< String, Object> > data = DBHelper. query ( sql) ;
if ( ! data. isEmpty ( ) ) {
Map< String, Object> row = data. get ( 0 ) ;
Product product = new Product (
Integer. parseInt ( row. get ( "pid" ) . toString ( ) )
, row. get ( "pcode" ) . toString ( )
, row. get ( "pname" ) . toString ( )
, new PType ( Integer. parseInt ( row. get ( "ptid" ) . toString ( ) ) , row. get ( "ptname" ) . toString ( ) )
, Float. parseFloat ( row. get ( "pprice" ) . toString ( ) )
, row. get ( "addtime" ) . toString ( ) ) ;
return product;
}
return null;
}
public List< Product> findByProductType ( String ptid) {
sql = "select p.pid,p.pcode,p.pname,pt.ptid,pt.ptname,p.pprice,p.addtime " +
"from products p " +
"INNER JOIN ptype pt " +
"on p.ptid = pt.ptid where pt.ptid=" + ptid + " order by p.addtime desc" ;
List< Map< String, Object> > data = DBHelper. query ( sql) ;
List< Product> products = new ArrayList < > ( ) ;
for ( Map< String, Object> row : data) {
Product product = new Product (
Integer. parseInt ( row. get ( "pid" ) . toString ( ) )
, row. get ( "pcode" ) . toString ( )
, row. get ( "pname" ) . toString ( )
, new PType ( Integer. parseInt ( row. get ( "ptid" ) . toString ( ) ) , row. get ( "ptname" ) . toString ( ) )
, Float. parseFloat ( row. get ( "pprice" ) . toString ( ) )
, row. get ( "addtime" ) . toString ( ) ) ;
products. add ( product) ;
}
return products;
}
public List< Product> findByProductName ( String productName) {
sql = "select p.pid,p.pcode,p.pname,pt.ptid,pt.ptname,p.pprice,p.addtime " +
"from products p " +
"INNER JOIN ptype pt " +
"on p.ptid = pt.ptid where pname like '%" + productName + "%' order by p.addtime desc" ;
List< Map< String, Object> > data = DBHelper. query ( sql) ;
List< Product> products = new ArrayList < > ( ) ;
for ( Map< String, Object> row : data) {
Product product = new Product (
Integer. parseInt ( row. get ( "pid" ) . toString ( ) )
, row. get ( "pcode" ) . toString ( )
, row. get ( "pname" ) . toString ( )
, new PType ( Integer. parseInt ( row. get ( "ptid" ) . toString ( ) ) , row. get ( "ptname" ) . toString ( ) )
, Float. parseFloat ( row. get ( "pprice" ) . toString ( ) )
, row. get ( "addtime" ) . toString ( ) ) ;
products. add ( product) ;
}
return products;
}
public List< Product> findByAll ( ) {
sql = "select p.pid,p.pcode,p.pname,pt.ptid,pt.ptname,p.pprice,p.addtime " +
"from products p " +
"INNER JOIN ptype pt " +
"on p.ptid = pt.ptid;" ;
List< Map< String, Object> > data = DBHelper. query ( sql) ;
List< Product> products = new ArrayList < > ( ) ;
for ( Map< String, Object> row : data) {
Product product = new Product (
Integer. parseInt ( row. get ( "pid" ) . toString ( ) )
, row. get ( "pcode" ) . toString ( )
, row. get ( "pname" ) . toString ( )
, new PType ( Integer. parseInt ( row. get ( "ptid" ) . toString ( ) ) , row. get ( "ptname" ) . toString ( ) )
, Float. parseFloat ( row. get ( "pprice" ) . toString ( ) )
, row. get ( "addtime" ) . toString ( ) ) ;
products. add ( product) ;
}
return products;
}
}
二、实现效果图