how2j.cn


工具版本兼容问题
还有些功能可以继续完善。
1. 后台管理员登陆模块
2. 产品图片排序
3. 前台分类下显示产品,提供分页功能
等等

学习是为了提高能力,去完成复杂和更有挑战的任务,这些功能就交由同学们自己完成了





HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2022-02-08 项目做完部署在服务器上,所有产品相关图片显示不出来
Pipi_pika

项目做完后,本地测试完全没有问题。按照站长另一篇项目部署章节 部署到自己的服务器上之后,其他都正常 就是所有产品图片显示不出来 。 自己修改测试了一下,发现把图片 src="img/product../${p.firstProductImage.id}.jpg" 中的${p.firstProductImage.id}改为数字就显示正常,可是这样就不能显示遍历结果了怎么办?




1 个答案

Pipi_pika
答案时间:2022-02-09
测试半天发现是云服务器上的mysql设置问题。 linux上的mysql内默认对表名(table name)大小写敏感,不知道为啥导致也读取不了productimage和propertyvalue表,所以前端无法显示。在服务器上mysql设置里添加lower_case_table_names=1就能正常获取了



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-06-30 站长真滴帅!!!
gugubird




增加前台分类下显示产品,提供分页功能 点击下一页报的一个错误 大概是这一句有问题 String redirect = m.invoke(this, request,response,page).toString(); 但是解决不了啊..
加载中
//ForeServlet的category方法
public String category(HttpServletRequest request, HttpServletResponse response, Page page) {
		int cid = Integer.parseInt(request.getParameter("cid"));
//		Category c = categoryDAO.get(cid);
//		productDAO.fill(c);
//		productDAO.setSaleAndReviewNumber(c.getProducts());
		
		int total = productDAO.getTotal(cid);
		List<Product> ps = productDAO.list(cid, page.getStart(), page.getCount());
		productDAO.setSaleAndReviewNumber(ps);
		page.setTotal(total);
		request.setAttribute("page", page);
		
		String sort = request.getParameter("sort");
		if (null != sort) {
			switch (sort) {
			case "review":
				Collections.sort(ps, new ProductReviewComparator());
				break;
			case "date":
				Collections.sort(ps, new ProductDateComparator());
				break;

			case "saleCount":
				Collections.sort(ps, new ProductSaleCountComparator());
				break;

			case "price":
				Collections.sort(ps, new ProductPriceComparator());
				break;

			case "all":
				Collections.sort(ps, new ProductAllComparator());
				break;
			}
		}
		request.setAttribute("ps", ps);
		return "category.jsp";

	}
type Exception report

message java.lang.reflect.InvocationTargetException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	tmall.servlet.BaseForeServlet.service(BaseForeServlet.java:62)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:62)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:59)
	tmall.filter.ForeAuthFilter.doFilter(ForeAuthFilter.java:58)
	tmall.filter.BackServletFilter.doFilter(BackServletFilter.java:43)
	tmall.filter.EncodingFilter.doFilter(EncodingFilter.java:31)

root cause

java.lang.reflect.InvocationTargetException
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:497)
	tmall.servlet.BaseForeServlet.service(BaseForeServlet.java:52)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:62)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:59)
	tmall.filter.ForeAuthFilter.doFilter(ForeAuthFilter.java:58)
	tmall.filter.BackServletFilter.doFilter(BackServletFilter.java:43)
	tmall.filter.EncodingFilter.doFilter(EncodingFilter.java:31)

root cause

java.lang.NumberFormatException: null
	java.lang.Integer.parseInt(Integer.java:542)
	java.lang.Integer.parseInt(Integer.java:615)
	tmall.servlet.ForeServlet.category(ForeServlet.java:110)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:497)
	tmall.servlet.BaseForeServlet.service(BaseForeServlet.java:52)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:62)
	tmall.filter.ForeServletFilter.doFilter(ForeServletFilter.java:59)
	tmall.filter.ForeAuthFilter.doFilter(ForeAuthFilter.java:58)
	tmall.filter.BackServletFilter.doFilter(BackServletFilter.java:43)
	tmall.filter.EncodingFilter.doFilter(EncodingFilter.java:31)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.64 logs.


3 个答案

gugubird
答案时间:2020-06-30
解决了,站长NB 是page的param属性没设置,获取不到category的id

how2j
答案时间:2020-06-30
(ForeServlet.java:110) 你的关键是这里是个null导致的,检查一下呢

gugubird
答案时间:2020-06-30
搞错了,是 request.getRequestDispatcher(redirect).forward(request,response);这句出错



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2020-05-03 这个项目直接是一个java项目,如果做改进怎么去编译呢?我把这个项目变成动态web项目,然后debugger发现程序不走我写的代码,还是按之前编译的再跑,也就是说我之后改动的代码根本没有编译
2019-11-13 我想问下站长之后的项目有没有多线程高并发啊
2019-10-15 项目部署404


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 2 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-天猫整站J2EE-改进练习 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图