Java简单购物车设计
还是存在一些问题(比如clear函数没效果、乱码,单独测试也没,确实找不到问题),路过的给解决下。。。
第一部分 会话控制
会话跟踪:
- 使用隐藏表单字段
- URL重写,实际就是直接把状态信息加到URL
- 持久Cookie
- 会话HttpSession
今天写filter的时候找不到web.xml了,急坏了我,原来是我在创建动态网站项目的时候,输入项目名称后就立刻按finish了,我刚才创建了另一个项目,一步一步next地来,在最后那步可以是否创建web.xml文件,最后把这个web.xml文件拷贝到原来项目的WEB-INF目录下就正常运行了(servlet3.0)。
页面编码问题:
首先,在 eclipse 中配置 workspace 项下 text file encoding 属性的值来决定此工作区间下所有的 eclipse 项目的文档的编码属性。 Window-->Preferences-->General-->Workspace, 在 workspace 下配置 text file encoding 的属性值是 other, 在 other 中选择 ”utf-8”, 配置完成后,点出 ok 保存。
其次,windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。已经搞好的就用批量转码工具。
session的常用方法:
1、 getAttribute():从session中获取以前存储的值
2、 getAttributeNames():返回session中所有属性的名称
3、 setAttribute():将键与值关联起来,存储进session
4、 removeAttribute():删除session中存储的对应键的值
5、 invalidate():删除整个session及其存储的键值
6、 logout():注销当前用户
7、 getId():获取每个session对应的唯一ID
8、 getCreationTime():获取session创建的时间
9、 getLastAccessedTime():获取session最后被访问的时间
10、getMaxInactiveInterval():在用户没有访问的情况下,会话在被自动废弃之前应该保持多长时间
第二部分 JS控制
html页面的所有元素均可以通过document.getElementById得到;document.forms["表单明"]或者document.forms["表单序号"]访问表单元素;document.frames["框架明"].document访问框架。
值得注意的getElementById这个方法查找的时候,会以传入的参数与第一次name属性值相同的元素查找出来。
<script type="text/javascript">function get(){//也可以直接通过元素的属性Id来直接获取var ipv6 = document.getElementById("ip").value;alert("ipv6: " + ipv6); //55::66var ipv4 = document.getElementById("ip").value;alert("ipv4: "+ipv4); //55::66var ipv44 = document.getElementById("ipv4").value;alert(ipv44); //1.1.1.1}</script><body><form action="hehe.jsp" id="one" method="post" name="one1" >ipv6 : <input type="text" name="ip" value="55::66" /><br>ipv4 : <input type="text" id="ip" name="ipv4" value="1.1.1.1" /><br><input type="button" value = "button" onclick="get()"></form></body>
getElementsByName(name),name这个属性在元素中是可以相同的也就是这个方法取出的是个集合(ID默认是唯一的,所以不实际和)。注意方法名,我老是写错少了“s”,这个方法与getElementById不太一样。
<script type="text/javascript">function get(){//也可以直接通过元素的属性name来直接获取var ip = document.getElementsByName("ip");var ipv6 = ip[0].value;alert("ipv6: " + ipv6); //55::66var ipv4 = ip[1].value;alert("ipv4: "+ipv4); //1.1.1.1}</script><body><form action="hehe.jsp" id="one" method="post" name="one1" >ipv6 : <input type="text" id="ipv6" name="ip" value="55::66" /><br>ipv4 : <input type="text" id="ipv4" name="ip" value="1.1.1.1" /><br><input type="button" value = "button" onclick="get()"></form></body>
getElementByTagName(tagname),根据元素来查询,返回的值肯定也是集合啦!可以用来得到表单各个字段的名字。
<script type="text/javascript">function get(){//也可以直接通过元素的属性tagname来直接获取var ip = document.getElementsByTagName("input");for(var i=0;i<ip.length;i++){alert(ip[i].value); //55::66 1.1.1.1 button}}</script><body><form action="hehe.jsp" id="one" method="post" name="one1" >ipv6 : <input type="text" id="ipv6" name="ip" value="55::66" /><br>ipv4 : <input type="text" id="ipv4" name="ip" value="1.1.1.1" /><br><input type="button" value = "button" onclick="get()"></form></body>
servlet处理复选框String[] param = request.getParameterValues("checkbox1")
表格变色:document.getElementById(row).style.backgroundColor="#FF0000";
第三部分 代码设计
import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FilterChar implements Filter {//�ýӿھ����������init��destroy��doFilterprivate String config;public void destroy() {this.config = null;}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req;req = (HttpServletRequest) request;HttpServletResponse res;res = (HttpServletResponse) response;req.setCharacterEncoding(config);res.setCharacterEncoding(config);chain.doFilter(req, res);}public void init(FilterConfig config) throws ServletException {this.config = config.getInitParameter("encode");}}
import java.io.IOException;import java.io.PrintWriter;import java.util.HashMap;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class FruitBuy extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubsuper.doPost(req, resp);}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {// TODO Auto-generated method stubHttpSession session = req.getSession(true);HashMap cart = (HashMap)session.getAttribute("cart");if(null==cart) {cart = new HashMap();//Ĭ����objectcart.put("J2SE","0");cart.put("J2EE","0");cart.put("J2ME","0");session.setAttribute("cart", cart);}PrintWriter out = res.getWriter();res.setContentType("text/html; charset=UTF-8");req.setCharacterEncoding("UTF-8");int j2se = Integer.parseInt(req.getParameter("book1amount"));int j2ee = Integer.parseInt(req.getParameter("book2amount"));int j2me = Integer.parseInt(req.getParameter("book3amount"));//object����ֱ��תΪint����int oldJ2se = (int)cart.get("J2SE");int oldJ2ee = (int)cart.get("J2EE");int oldJ2me = (int)cart.get("J2ME");cart.put("J2SE", oldJ2se);cart.put("J2EE", oldJ2ee);cart.put("J2ME", oldJ2me);out.println("����������"+cart.get("J2SE")+cart.get("J2EE")+cart.get("J2ME"));out.println("<hr>");out.println("�ص����"+"<a href=\"res.encodeRedirectURL(\"buy.jsp\") />");}}
<%@ page language="java" contentType="text/html; Charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>ÍøÉÏÊéµê是</title><script type="text/javascript" language="JavaScript">function clear1() {document.forms["fruitform"].book1amount.value="";}function clear2() {document.forms["fruitform"].book2amount.value="";}function clear3() {document.forms["fruitform"].book3amount.value="";}function changecolor( row) {//C大写document.getElementById(row).style.backgroundColor="#FF0000";}function resetcolor( row) {//C大写document.getElementById(row).style.backgroundColor="#FFFFFF";}//ÒòΪajax²»»á£¬È¨µ±Á·Ï°jsfunction show1() {document.forms["fruitform"].book1amount.value =document.getElementById(book1amount).value;window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book1amount.value+"±¾");}function show2() {document.forms["fruitform"].book2amount.value =document.getElementById(book2amount).value;window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book2amount.value+"±¾");}function show3() {document.forms["fruitform"].book3amount.value =document.getElementById(book3amount).value;window.alert("Äú¹ºÂòÁË:" + document.forms["fruitform"].book3amount.value+"±¾");}</script></head><body><form action="FruitBuy" name="fruitform" method="get"><hr align="center" size="1"><table ><!-- ±ØÐë·ÅÔÚtableÄÚ²¿ --><caption>»¶ÓÀ´µ½ÎÒµÄÍøÉÏÊéµê</caption><tr id="row"><th>ÖÖÀà</th><th>µ¥¼Û</th><th>ÊýÁ¿</th></tr><tr id="row1" onMousemove="changecolor('row1')" onMouseout="resetcolor('row1')"><td>J2SE¾«±à</td><td>22.0</td><td><input type="text" name="book1amount" id="book1amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show1()"></td></tr><tr id="row2" onMousemove="changecolor('row2')" onMouseout="resetcolor('row2')"><td>J2EE¾«±à</td><td>36.0</td><td><input type="text" name="book2amount" id="book2amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show2()"></td></tr><tr id="row3" onMousemove="changecolor('row3')" onMouseout="resetcolor('row3')"><td>J2ME¾«±à</td><td>22.0</td><td><input type="text" name="book3amount" id="book3amount" value="ÇëÊäÈ빺ÂòÊýÁ¿" onFocus="clear()" onBlur="show3()"></td></tr></table><hr align="center" size="1"><input type="submit" value="·ÅÈ빺Îï³µ"></form></body></html>
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>WEB</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><filter><filter-name>FilterChar</filter-name><filter-class>FilterChar</filter-class><init-param><param-name>encode</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>FilterChar</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
Java简单购物车设计的更多相关文章
- java简单框架设计
设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者 ...
- Java面向对象课程设计——购物车
Java面向对象课程设计——购物车 小组成员:余景胜.刘格铭.陈国雄.达瓦次仁 一.前期调查 流程 客人(Buyer)先在商城(Mall)中浏览商品(Commidity),将浏览的商品加入购物车(Sh ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- Java异常处理和设计【转】
Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...
- Java DB loadBalance 设计
Java DB loadBalance 设计 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {backgr ...
- Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)
#Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...
- 201521123118《java程序与设计》第4周作业总结
1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容. 为了不必要写重复的代码,可以运用继承,用关键字extends来定义一个类,被继承的类叫做父类,继 ...
- Python实例---简单购物车Demo
简单购物车Demo # version: python3.2.5 # author: 'FTL1012' # time: 2017/12/7 09:16 product_list = ( ['Java ...
- 利用JAVA反射机制设计通用的DAO
利用JAVA反射机制设计一个通用的DAO 反射机制 反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 反射机制创建类对象 ...
随机推荐
- SQL高级优化之经常使用的优化策略-2(The Return Of The King)
1.2 索引 索引不是越多越好,你须要知道索引建立多了.写入数据的效率会减少.怎样使用索引要看你的项目的应用场景,做出合理的測试评估. 1.2.1 统计数量 统计数量上.假设字段(fieldName) ...
- Memcache及telnent命令详解--转
1.启动Memcache 常用参数memcached 1.4.3-p <num> 设置端口号(默认不设置为: 11211)-U <num> UDP监听端口 ...
- session的固化(搁置)
Session在其生命周期中,可能会在运行时状态和持久化状态之间转换. 会话从运行时状态变为持久化状态的过程称为 -- 搁置:在以下情况下,Session会被搁置: 当服务器总之或单个Web应用终止时 ...
- iOS中Git的使用
打开终端: 查看Git的版本的终端命令:git —version 输入:ssh 查看是否已经存在ssh. 如果存在,先将已有的ssh备份,或者将新建的ssh生成到另外的目录下 如果不存在,通过默认的参 ...
- hdu2073递推题
无限的路 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissio ...
- Mybaitis配置总结
在mybatis-config.xml中配置分页插件,插件配置必须放在mapper前面 <plugins> <plugin interceptor="com.rrtong. ...
- HTML5 Canvas 2D绘图
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/4851774. ...
- Ajax无刷新提交表单和显示
ajax无刷新表单提交: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- VS2010打不开VS2012 .NET MVC 工程,及打开后部分模块加载不正确的解决办法
转自http://www.xuebuyuan.com/2042634.html 首先,如果sln打开不正确,用(notepad++)打开sln 比如 VS2010的前两行为: Microsoft Vi ...
- Android SQLite ORM框架greenDAO在Android Studio中的配置与使用
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 # 说明 greenDAO是安卓中处理SQLite数据库的一个开源的库,详情见其官网:我是官网 详 ...