servlet+c3p0网上商城复习

(注释中文乱码,只能说你可以导入别人的项目乱码,可以自己的项目不同项目乱码,但千万不要同一项目不同类用不同的编码)

 

1. Map<String,String[]> map=request.getParameterMap();搭配BeanUtils.populate(类,map)可以做到将页面参数配合类的set方法一起封装到实体类里。其中如果涉及到日期格式,即实体类中是Date类型(如private Date birthday;)它的populated只限于字符串
,所以可以自定义myBeanUtils,里面其实嵌套BeanUtils.populate,只是为了日期来注册一个时间转换器:

转换是convert,格式是pattern,所以它得将一个设置了格式的转换器(DateConverter)注册到ConvertUtils.register(转换器,转换类)。

2.servlet的开发真的该被淘汰,用个c3p0还得自己写一堆重复的连接,事务提交和queryRunner等。

3.关于页面跳转:

ssh是返回给struts.xml一个字符串,            <result name="success" type="redirect">/index.jsp</result>  type里面决定要不要重定向

ssm返回的是“redirect:/xxx”  xxx的前后缀已经在springmvc中定义。

servlet却是            response.sendRedirect("/store_v1.0/index.jsp"); return null;

springboot 与ssm区别在没有springmvc-config.xml,所以是在WebMvcConfiguer里定义:

registry.addViewController("/login.html").setViewName("login");注册控制器的视图,并给它别名。

4.我自定义了一个BaseServlet extends HttpServlet,在里面截取url,获得访问的方法,再从继承BaseServlet的运行的子类中取出和请求的方法同名的方法,再写请求分派路径。我想这就是SSM的@RequestMapping前身。

5.在导航栏的显示中,查询所有分类运用了redis。

JedisConfig用来如果你有最大连接数类似的要求。JedisPool()来启动连接池,参数为config和主机号、端口号。有了连接池就可以获得数据源getResource()。之后的使用语法就是get/set,set要存的是json类型的。resp.getWriter().print(jsonstr);是用来输出到前端的。记住close().

 

6.

加入购物车功能:

购物车在数据库中是没有表的,它是存在用户的session中的。而订单和订单项都有表。

实体类有cartItem,购物车需要有product另一个实体类,数量,金额;多个cartItem再放到列表里,放到实体类cart里,数量,金额。值得一提的是数量的叠加和金额的计算实在实体类中实现的,逻辑是:HashMap<String,cartItem>,通过map来确定其中是否之前已经有加入购物车,有的话把之前的数量加上现在的数量作为新数量(map.getKey(xx).getItem().getNum()+传进来的item.getNum()),金额的叠加用:map.getValues()返回一个列表迭代相加,所以map和购物车搭配真心好用,反正是session里存的暂时数据,map.remove/clear实现删除某个购物车项和清空购物车。

添加商品到购物车用的就是上面map的数量叠加逻辑,所以在servlet层写的时候,从session中取出“cart”,cart.add(cartItem)

7.我的订单:

从session取出cart,orderItem需要它的product/数量、金额,再把多个orderItem存到order里,order有额外属性,如订单的编号、时间、用户。在保存的时候要注意,由于order表和orderItem表有依赖,所以事务得一起提交,所以con.setAutoCommit(false); 最后再.commit();值得一提的是在分页显示我的订单时,分页的bean有一个Url属性,是用来方便拼接跳转路径的,单独付款某个订单的pm.setUrl("orderServlet?method=findbyPage");分页的时候从数据库拿信息也很有趣,为了数据的不冗余,会有product表、orderItem表和order表,用的时候再表相连。这个时候除了根据用户id获得order外,还要把product表和orderItem表连接,用到BeanMapHandler()和populate把数据库信息装到相应的两个实体类中。

8.注册邮箱验证:

注册保存用户之后,写一个工具类MailUtil,里面是如何锁定邮箱,发送链接,链接里面还是个包含了active的url,这样点击之后就会触发另一个方法,那个方法返回到注册页面告诉你是否注册成功。

9.文件上传:

和ssh不一样,没能直接就取到上传的文件信息。而且ssh是图片保存。我们现在要的是上传本地图片,是开发者非用户者角度,而且估计还是不同主机上传到某一台主机,当管理员点击表单提交,触发servlet层相应方法的时候,要把图片从磁盘-->变成文件项--->上传到request请求中,所以:

new DiskFileItemFactory();//factory   ServletFileUpload(factory)//感觉像内嵌了一种处理方式  upload.parseRequest(req)//就是启动内嵌方式把req返回List<FileItem>,又由upload包装成与上传有关的格式吧。

List<FileItem>//list,迭代用a表示,有的是表单项,有的是图片上传项,这是不同类型,要不同处理,所以用map来存储;用.isFormField(),是表单域就是普通表单项,map存的是名字(a.getFieldName())、值(直接a.getString("utf-8"),FileItem直接就是值)而对于文件项,名字是a.getName(),后面常规操作创建文件夹什么的,不同的是保存图片时用的是流的方式,IOUtils.copy(输入流,输出流)a.getInputStream()获得输入流,FileOutputStream(地址),保存的地址。map存路径。

 

### 回答1: JSP(Java Server Pages)、ServletC3P0连接池以及MySQL数据库可以一起使用来实现一个简单的新闻系统。 JSP是一种动态网页开发技术,可以在网页上直接嵌入Java代码。通过使用JSP,我们可以将网页与后端代码相结合,以实现新闻系统的前端展示。 Servlet是一个Java类,可以处理HTTP请求和生成HTTP响应。在新闻系统中,我们可以创建一个Servlet用于接收用户的请求,例如浏览新闻、发布新闻等,然后调用后端的业务逻辑进行处理。 C3P0是一个Java数据库连接池,用于管理和优化数据库连接的创建和销毁。在新闻系统中,我们可以配置C3P0连接池来提高性能和可伸缩性,减少数据库连接的开销。 MySQL是一个流行的关系型数据库,可以用于存储和管理新闻数据。我们可以创建一个MySQL数据库,并设计相应的表来保存新闻标题、内容、作者、发布时间等信息。 在实现简单的新闻系统时,可以使用JSP来创建前端页面,利用Servlet进行后端业务逻辑处理。通过C3P0连接池,我们可以在Servlet中创建数据库连接,并使用Java代码操作MySQL数据库,例如查询、插入、更新和删除新闻数据。 整个过程可以按照如下步骤进行:用户发送请求到ServletServlet从数据库中获取新闻数据,再将数据传递给JSP页面进行渲染,然后将渲染后的页面发送给用户。用户可以通过提交表单或者其他方式触发Servlet中的相应操作,从而实现新闻系统的各种功能,例如发表新闻、删除新闻等操作。 通过结合JSP、ServletC3P0连接池和MySQL数据库,我们可以轻松地搭建一个简单的新闻系统,实现新闻的发布、浏览等基本功能。当然,想要实现更复杂的新闻系统,还需要考虑用户认证、权限管理、搜索功能等方面的设计和实现。 ### 回答2: 简单新闻系统使用JSP、Servletc3p0和MySQL实现。 JSP是Java Server Pages的缩写,是一种动态网页开发技术,能够与Java Servlet一起生成HTML、XML或其他文档。Servlet是运行在服务器端的Java小程序,能够接收和响应客户端的请求。c3p0Java数据库连接池库,提供高性能、高可靠性的数据库连接管理。MySQL是一个开源的关系型数据库管理系统。 我们可以通过使用JSP和Servlet来实现简单新闻系统的前端和后端功能。前端页面使用JSP编写,用于展示新闻列表、新闻详情等信息。后端使用Servlet来接收前端的请求,并根据请求的不同执行相应的逻辑操作。 在实现新闻系统时,我们可以使用c3p0作为连接池来管理与数据库的连接。通过配置连接池的参数,如最大连接数、最小连接数、连接超时时间等,可以有效地管理数据库连接。使用c3p0能够提高数据库操作性能和可靠性,避免频繁地进行数据库连接的创建和关闭。 与数据库的交互使用MySQL来实现。可以使用MySQL提供的接口或者使用JDBC驱动来连接数据库,并执行相关的查询和更新操作。通过JSP和Servlet与数据库进行数据的交互,可以实现新闻的增删改查、新闻分类和搜索等功能。 总之,通过使用JSP、Servletc3p0和MySQL,我们可以实现一个简单的新闻系统。JSP负责前端页面的展示,Servlet负责后端逻辑的处理,c3p0负责管理数据库连接,MySQL负责存储和查询新闻数据。这些技术的结合可以实现一个高效、可靠的新闻系统。 ### 回答3: JSP和ServletJava EE中用于开发Web应用程序的重要技术。C3P0是一个流行的连接池库,用于管理数据库连接。MySQL是一个广泛使用的关系型数据库。 基于JSP和Servlet,结合C3P0连接池和MySQL数据库,我们可以构建一个简单的新闻系统。以下是实现的步骤: 1. 创建数据库表格:在MySQL数据库中创建一个用于存储新闻的表格,包含标题、内容、作者和发布日期等字段。 2. 配置C3P0连接池:在项目中引入C3P0库,并在web.xml或其他配置文件中配置C3P0的连接信息,如数据库URL、用户名和密码。应该设置合适的参数来管理数据库连接的数量和复用。 3. 创建新闻管理类:编写一个Java类来处理新闻的增、删、改和查操作,该类应该使用C3P0连接池来获取数据库连接并执行SQL语句。可以使用PreparedStatement来防止SQL注入攻击,并通过ResultSet获取执行结果。 4. 创建JSP页面:使用JSP技术编写展示新闻列表、查看新闻详情和发布新闻等页面。可以通过调用新闻管理类的方法来获取新闻数据,并在页面中展示。 5. 配置Servlet:在web.xml或其他配置文件中配置Servlet的映射关系,将请求路径与对应的Servlet类绑定。例如,为展示新闻列表和查看新闻详情分别配置不同的Servlet。 6. 在Servlet中处理请求:编写Servlet类,根据请求参数调用新闻管理类的相应方法,并将处理结果传递给对应的JSP页面进行展示。可以通过request对象获取参数值,通过response对象返回处理结果。 通过以上步骤,我们可以实现一个简单的新闻系统。用户可以通过浏览器向服务器发送请求,服务器接受请求后,使用JSP和Servlet技术调用C3P0连接池从数据库中获取新闻数据,并将结果返回给用户进行展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值