Java簡單購物車設計


        還是存在一些問題(比如clear函數沒效果、亂碼,單獨測試也沒,確實找不到問題),路過的給解決下。。。

第一部分     會話控制

會話跟蹤:

  • 使用隱藏表單字段
  • URL重寫,實際就是直接把狀態信息加到URL
  • 持久Cookie
  • 會話HttpSession

        今天寫filter的時候找不到web.xml了,急壞了我,原來是我在創建動態網站項目的時候,輸入項目名稱后就立刻按finish了,我剛才創建了另一個項目,一步一步next地來,在最后那步可以是否創建web.xml文件,最后把這個web.xml文件拷貝到原來項目的WEB-INF目錄下就正常運行了(servlet3.0)。

頁面編碼問題:

        首先,1在 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::66
     
     var ipv4 = document.getElementById("ip").value;
     alert("ipv4: "+ipv4);  //55::66
     
     var 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::66
     
     var 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��doFilter
	private 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{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession session = req.getSession(true);
		HashMap cart = (HashMap)session.getAttribute("cart");
		if(null==cart) {
			cart = new HashMap();
			//Ĭ����object
			cart.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²»»á£¬È¨µ±Á·Ï°js
		function 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>

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM