查询产品品牌的列表和品牌的详细信息

news/2024/11/8 3:15:25/

目录

1.创建一个项目中的src--main-java--com.csi.eshop 下有三个包:

2.main--webapp有:


Session消失的几种方式:客户端和服务器端

  • 客户端
  1. 如果关闭浏览器,在重新打开的时候会导致产生一个新的cookie 同时就会产生一个新的sessionId对象,对于用户来讲,相当于一个新的用户。之前的session就消失了
  2. 关闭浏览器之前的session并没有消失,会保留在服务器中知道过期为止
  • 服务器端
  1. session超时,一段时间之内没有和浏览器做交互的话,此刻的状态就是未交互状态,当时长超过默认的时间或者使用者自定义的时间的 会导致session消失
  2. 用户点击了注销按钮之后,此时的注销按钮调用了session.invalidate()方法,导致当前用户session 注销
  3. 服务器待机或者关闭服务资源, 或者是由于遇到严重错误的时候 也会导致session消失。

1.先编写domain

package com.csi.eshop.domain;import java.io.Serializable;public class ProductBrand  implements Serializable {private Integer id;private String brand_name;private String brand_desc;private String brand_logo;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBrand_name() {return brand_name;}public void setBrand_name(String brand_name) {this.brand_name = brand_name;}public String getBrand_desc() {return brand_desc;}public void setBrand_desc(String brand_desc) {this.brand_desc = brand_desc;}public String getBrand_logo() {return brand_logo;}public void setBrand_logo(String brand_logo) {this.brand_logo = brand_logo;}
}

2.编写dao 中的 接口

package com.csi.eshop.dao;import com.csi.eshop.domain.Product;
import com.csi.eshop.domain.ProductBrand;import java.sql.SQLException;
import java.util.List;public interface ProductBrandDao {List<ProductBrand> list() throws SQLException;List<Product> findId(int brand_id) throws  SQLException;
}

2.1编写dao 中的 impl

package com.csi.eshop.dao.impl;import com.csi.eshop.dao.ProductBrandDao;
import com.csi.eshop.domain.Product;
import com.csi.eshop.domain.ProductBrand;
import com.csi.eshop.utils.JDBCUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class ProductBrandDaoImpl extends JDBCUtils implements ProductBrandDao {@Overridepublic List<ProductBrand> list() throws SQLException {final String SQL = "SELECT * FROM easybuy_brand" ;Connection connection = this.getConnection() ;PreparedStatement ps = connection.prepareStatement(SQL);ResultSet rs = ps.executeQuery();List<ProductBrand> productBrands = new ArrayList<>() ;ProductBrand productBrand = null ;while (rs.next()){productBrand = new ProductBrand() ;productBrand.setId(rs.getInt("id"));productBrand.setBrand_name(rs.getString("brand_name"));productBrand.setBrand_desc(rs.getString("brand_desc"));productBrand.setBrand_logo(rs.getString("brand_logo"));productBrands.add(productBrand);}release(rs,ps,connection);return productBrands;}@Overridepublic List<Product> findId(int brand_id) throws SQLException {final String SQL = "SELECT * FROM easybuy_product where isDelete = 0 AND brand_id = ?" ;Connection connection = this.getConnection() ;PreparedStatement ps = connection.prepareStatement(SQL);ps.setInt(1,brand_id);ResultSet rs = ps.executeQuery();List<Product> products = new ArrayList<>() ;Product product = null ;while(rs.next()){product = new Product() ;product.setId(rs.getInt("id"));product.setName(rs.getString("name"));product.setDescription(rs.getString("description"));product.setPrice(rs.getDouble("price"));product.setStock(rs.getInt("stock"));products.add(product);}release(rs,ps,connection);return products;}
}

在dao中出现的错误:1.空指针异常:500

  • 查询的SQL语句和对应的表要写正确
  • if:是查询一个
  • while:查询多个

3.编写service中的接口

package com.csi.eshop.service;import com.csi.eshop.domain.Product;
import com.csi.eshop.domain.ProductBrand;import java.util.List;public interface ProductBrandService {List<ProductBrand> list();List<Product> findId(int brand_id) ;}

3.1 编写service中的impl

package com.csi.eshop.service.impl;import com.csi.eshop.dao.ProductBrandDao;
import com.csi.eshop.dao.impl.ProductBrandDaoImpl;
import com.csi.eshop.domain.Product;
import com.csi.eshop.domain.ProductBrand;
import com.csi.eshop.service.ProductBrandService;import java.sql.SQLException;
import java.util.List;public class ProductBrandServiceImpl implements ProductBrandService {@Overridepublic List<ProductBrand> list() {ProductBrandDao productBrandDao = new ProductBrandDaoImpl() ;List<ProductBrand> list = null;try {list = productBrandDao.list();} catch (SQLException e) {e.printStackTrace();}return list;}@Overridepublic List<Product> findId(int brand_id) {ProductBrandDao productBrandDao = new ProductBrandDaoImpl() ;List<Product> brandid = null;try {brandid = productBrandDao.findId(brand_id);} catch (SQLException e) {e.printStackTrace();}return brandid;}}

4.可以在test包中进行测试:

package com.csi.easybuy.service;import com.csi.eshop.domain.Product;
import com.csi.eshop.domain.ProductBrand;
import com.csi.eshop.service.ProductBrandService;
import com.csi.eshop.service.ProductService;
import com.csi.eshop.service.impl.ProductBrandServiceImpl;
import com.csi.eshop.service.impl.ProductServiceImpl;
import org.junit.Before;
import org.junit.Test;import java.util.List;public class TestProductService {ProductService productService ;ProductBrandService productBrandService ;@Beforepublic void init() {productService = new ProductServiceImpl() ;productBrandService = new ProductBrandServiceImpl() ;}@Testpublic void testListCategory4Index(){System.out.println(productService.listByCategory4Index(548).size());}@Testpublic void  testfindById() {Product product = productService.findById(742);System.out.println(product);}@Testpublic void testList(){List<ProductBrand> list = productBrandService.list();System.out.println(list.size());}@Testpublic void testfindId() {List<Product> id = productBrandService.findId(2) ;System.out.println(id.size());}}

在进行test测试的时候可以看到前面写的方法会不会报错等信息及时修改。

5.在webapp下的controller中编写业务逻辑

5.1产品的品牌列表查询

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%ProductBrandService productBrandService = new ProductBrandServiceImpl() ;List<ProductBrand> list = productBrandService.list();request.setAttribute("list",list);request.getRequestDispatcher("/Brand.jsp").forward(request,response);%>

5.2产品信息的详细查询:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String id = request.getParameter("id") ;int brand_id = 0 ;//如果参数不是null的话,再转换成int类型if(id != null) {brand_id = Integer.valueOf(id) ;}ProductBrandService productBrandService =new ProductBrandServiceImpl() ;List<Product> product = productBrandService.findId(brand_id);request.setAttribute("product",product);request.getRequestDispatcher("/BrandList.jsp").forward(request,response);%>

6.在jsp页面中编辑 (brand.jsp)

将数据表中的商品的品牌列表的信息全部展现在界面中。包括商品的 LOGO、名称、描述、就可以了。在jsp页面中的将要显示的ul li 套用循环的步骤

步骤1

ProductBrandDao productBrandDao = new ProductBrandDaoImpl() ;

步骤2 .创建一个List集合 然后进行非空判断

步骤三 就行foreach 循序将LI中的商品信息 循环出来

     <%ProductBrandDao productBrandDao = new ProductBrandDaoImpl() ;List<ProductBrand> productBrands = (List<ProductBrand>) request.getAttribute("list");if (productBrands != null){for (ProductBrand productBrand : productBrands){%><li><div class="img"><a href="/controller/ProductInfoController.jsp>id=<%=productBrand.getId()%>"><%=productBrand.getId()%></a><img src="images/brand1.jpg" width="226" height="108"  class = "open_xx"/></div><div class="name"><span><%=productBrand.getBrand_name()%></span>(20)</div></li><%}}%>

6.16.在jsp页面中编辑 (brandList.jsp)

点击商品品牌会看到商品的详细界面 将商品的详情全部罗列到一个新的页面

和展现商品的品牌信息 的过程大概一样。

                <%ProductBrandDao productBrandDao = new ProductBrandDaoImpl() ;List<Product> products = (List<Product>) request.getAttribute("product");if (products != null){for (Product product : products){%><li><div class="img"><a href="#"><img src="images/per_1.jpg" width="210" height="185" /></a></div><div class="price"><font>¥<span><%=product.getPrice()%></span></font> &nbsp; 26R</div><div class="name"><a href="#"><%=product.getName()%></a></div><div class="carbg"><a href="#" class="ss">收藏</a><a href="#" class="j_car">加入购物车</a></div></li><%}}%>

7.在运行中需要连接数据库

8.工具类(JDBCUtils和MDK5加密方式)调用就行

package com.csi.eshop.utils;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.*;
import java.util.Properties;/*** JDBC资源管理工具类*/
public class JDBCUtils {private Properties properties ;{//构建对象properties = new Properties() ;try {//通过类加载器,找到classes目录,继而找到db.properties文件properties.load(JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties"));} catch (IOException e) {e.printStackTrace();}}/*** 创建连接* java.sql.Connection*/protected Connection getConnection() throws SQLException {try {Class.forName(getValue("classname")) ;} catch (ClassNotFoundException e) {e.printStackTrace();}//2. 建立连接  http://www.sohu.comConnection connection = DriverManager.getConnection(getValue("url"),getValue("username"),getValue("password")) ;return connection ;}/*** 释放连接*/protected void release(Connection connection) {if(connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}protected void release(Statement statement) {if(statement != null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}}protected void release(ResultSet rs) {if(rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}}/*** 增删改实现关闭* @param ps* @param connection*/protected void release(PreparedStatement ps,Connection connection) {release(ps);release(connection);}/*** 查询关闭* @param rs* @param ps* @param connection*/protected void release(ResultSet rs, PreparedStatement ps, Connection connection) {release(rs);release(ps,connection);}/*** 从属性文件中,获取到key对应的value值* @param key* @return*/public String getValue(String key) {return properties.getProperty(key) ;}}

JDBC的有话连接数据库:

db--properties 是在resources下的配置信息

classname=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/easybuy
username=root
password=root

MDK的工具类:

package com.csi.eshop.utils;import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** MD5加密方式*/public class MD5Utils {public static String str2MD5(String str) {//    str += "456wdq1d5612";byte[] digest = null ;try {MessageDigest md5 = MessageDigest.getInstance("md5");digest = md5.digest(str.getBytes("UTF-8"));} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}//16位表示转换为16进制数String md5Str = new BigInteger(1,digest).toString(16);return md5Str;}/*    public static void main(String[] args) {System.out.println(str2MD5("123456"));}*/
}

http://www.ppmy.cn/news/206425.html

相关文章

洗地机什么品牌质量好,四款质量好的洗地机推荐

智能化使用的清洁工具&#xff0c;在日常使用当中更为简便化&#xff0c;能够极大解放我们的双手&#xff0c;洗地机就是属于一种具备超高清洁力的智能清洁工具&#xff0c;仅需手持拖拉就能够将地面垃圾清洁干净&#xff0c;有很多朋友买回家的洗地机总是容易坏&#xff0c;本…

网络安全自学笔记+学习路线(超详细)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

进口中国十大老牌自行车全世界十大名牌自行车品牌排行榜

自行车&#xff0c;又称脚踏车或单车&#xff0c;通常是二轮的小型陆上车辆。骑自行车是一种最有效的有氧运动&#xff0c;骑车可以加快身体代谢&#xff0c;增强心脏功能&#xff0c;增加肺活量&#xff0c;长期坚持可以强身健体&#xff0c;提高机体的免疫力&#xff0c;抵抗…

汽车车灯的发展趋势

汽车车灯的发展和光源的发展也是息息相关的,光源从煤油灯——》乙炔灯——》白炽灯——》卤素灯——》放电灯——》LED灯——》激光灯——》像素化光源,可以说一步步的越来越进步, 而车灯的发展也从白炽灯 ——》卤素灯——》氙气灯——》LED灯。比如有一款车使用的Matrix矩…

汽车行业常识

1、汽车电子的KL30 KL50 KLR 德国影响了全球的汽车工业&#xff0c;汽车行业内的很多术语都源于德语&#xff0c;比如KL。 KL(即Klemme)指ECU的管脚。 德国标准化协会制定的DIN72552规范(Terminal markings for motor vehicles)定义了ECU⼀些⽐较常⽤的管脚号码及其意义。以下…

汽车常识

一.汽车参数 1.寿命 (1) 政策寿命&#xff08;排放标准&#xff09;&#xff1a;15年 (2) 经济寿命&#xff08;维修成本&#xff09;&#xff1a;13年 (3) 心理寿命&#xff08;喜新厌旧&#xff09;&#xff1a;10年 2.发动机 (1) 涡轮增压 (2) 自然吸气 3.汽油 (1) 油号 …

汽車品牌

汽車品牌 一、德國 1、Volkswagen/大众汽车Volkswagen/大众汽车 (shortened to VW) is a German automaker founded in 4 January 1937 by the German Labour Front, headquartered in Wolfsburg, Germany. It is the flagship marque of the Volkswagen Group and is the larg…

尚驰SHANGCHI洗车店兰州汽车美容店私人定制洗车服务 杜绝难看的洗车纹!

私人定制洗车服务 杜绝难看的洗车纹 &#xff08;拟定&#xff09; 定制服务是针对有特殊需求的顾客&#xff0c;对自己的爱车爱护有加的一类人群&#xff0c;和高端车辆和新车用户。顾客可以一次性购买此类商品&#xff0c;并对东西可以保存到我店&#xff0c;专人专用享有尊…