commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
以下是csdn下的下載鏈接:
http://download.csdn.net/source/2907435
posted @ 2010-12-15 09:44 jack zhai 閱讀(175) | 評論 (0) | 編輯 收藏
包括:
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ejb3-persistence.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.8.jar
在csdn上的下載地址:
http://download.csdn.net/source/2907437
posted @ 2010-12-15 09:43 jack zhai 閱讀(185) | 評論 (0) | 編輯 收藏
<package name="member" namespace="/member" extends="struts-default"> <action name="regist" class="cc.apl330.action.MemberAction"> <result >/suc.jsp</result> <result name="isExists">/fail.jsp</result> </action> </package>
運行正常,用戶注冊成功后會跳轉到suc.jsp
如果將配置改成
<package name="member" namespace="/member" extends="struts-default"> <action name="regist" class="cc.apl330.action.MemberAction"> <result >/suc.html</result> <result name="isExists">/fail.jsp</result> </action> </package>
運行不正常,用戶輸入數據后,點擊確定。查看數據庫,數據庫寫入正常,但頁面空白,地址欄卻正常:http://localhost:8080/test/member/regist
posted @ 2010-12-14 10:58 jack zhai 閱讀(150) | 評論 (0) | 編輯 收藏
1、導入spring 及Mysql's jdbc包2、代碼的輸入
AOP類package cc.apl330.aspect; public class UserAspect { public void before() { System.out.println("method before!"); } }
數據庫操作package cc.apl330.dao; import cc.apl330.model.User; public interface IDAO { public void save(User user) ; }
數據庫操作package cc.apl330.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.sql.DataSource; import cc.apl330.model.User; public class UserDAO implements IDAO { private DataSource dataSource ; public void save(User user) { int id = user.getId(); String name = user.getName() ; String sql = "INSERT INTO USER(_id,_name) VALUE(?,?)" ; Connection conn = null ; PreparedStatement ps = null ; try { conn = dataSource.getConnection() ; ps = conn.prepareStatement(sql) ; ps.setInt(1, id) ; ps.setString(2, name) ; ps.executeUpdate() ; } catch (SQLException e) { e.printStackTrace(); }finally{ try { ps.close() ; conn.close() ; } catch (SQLException e) { e.printStackTrace(); } } } public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } }
業務層package cc.apl330.service; import cc.apl330.dao.IDAO; import cc.apl330.dao.UserDAO; import cc.apl330.model.User; public class UserService { private UserDAO userdao = null ; public void add(User user) { userdao.save(user) ; } public UserDAO getUserdao() { return userdao; } public void setUserdao(UserDAO userdao) { this.userdao = userdao; } }
測試類package cc.apl330.service; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cc.apl330.model.User; public class UserServiceTest { @Test public void save() { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml") ; UserService userService = (UserService) ctx.getBean("userService"); User user = new User() ; user.setName("apl330") ; userService.add(user); } }
sping配置文件<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="dao" class="cc.apl330.dao.UserDAO" > <property name="dataSource" ref="dataSource"></property> </bean> <bean id="user" class="cc.apl330.model.User" scope="prototype"></bean> <bean id="userService" class="cc.apl330.service.UserService"> <property name="userdao" ref="dao"></property> </bean> <bean id="addbefore" class="cc.apl330.aspect.UserAspect"></bean> <aop:config> <aop:pointcut expression="execution(public * cc.apl330.service.*.add(..))" id="userpoincut"/> <aop:aspect id="useraspect" ref="addbefore" > <aop:before method="before" pointcut-ref="userpoincut"/> </aop:aspect> </aop:config> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/spring"></property> <property name="username" value="root"></property> <property name="password" value="359848184"></property> </bean> </beans>
posted @ 2010-12-11 19:09 jack zhai 閱讀(355) | 評論 (0) | 編輯 收藏
一、編寫Servlet代碼,繼承自HttpServlet類,并覆蓋 public void doGet(HttpServletRequest req, HttpServletResponse resp) 方法
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SimpleHello extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter() ; out.println("hello world"); out.close() ; } }
二、部署Servlet。在web.xml中加入如下代碼:
<servlet> <servlet-name>SimpleHello</servlet-name> <servlet-class>cc.apl330.SimpleHello</servlet-class> </servlet> <servlet-mapping> <servlet-name>SimpleHello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
三、測試。在瀏覽器中輸入:http://localhost:8080/ServletTest/hello
服務器過程是這樣的:1 服務器檢測請求地址:http://localhost:8080/ServletTest/hello2 得到字符串: /hello3 在web.xml中尋找 <servlet-mapping>下的<url-pattern>內的值是否有對應的。有,就找到<servlet-name>的值4 在web.xml中尋找 <servlet> 找到相應的servlet類執行
posted @ 2010-09-30 10:40 jack zhai 閱讀(86) | 評論 (0) | 編輯 收藏
erji2.jsp 文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="cc.apl330.Citys_Arr"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'erji2.jsp' starting page</title> </head> <!-- init()用于初始化聯動選項 --> <body onload="init()"> <% //讀取數據 Citys_Arr ca = null ; %> <form action="" name="fom"> <select name="s1" onchange="sel()"> <% ca = new Citys_Arr() ; for(int i = 0 ; i < ca.getCitys().length; i++ ) { %> <option><%=ca.getCitys()[i]%></option> <% } %> </select> <select name="s2"> </select> </form> </body> <script type="text/javascript"> <% int citys = ca.getCitys().length ; %> var select2 = new Array(<%=citys%>) ; <!-- //初始化 --> function init() { <% for(int i = 0 ; i < citys ; i++ ) { %> select2[<%=i%>] = new Array() ; <% } %> <% for(int x = 0 ; x < citys ;x++){ for(int y = 0 ; y < ca.getZone()[u].length ; y++){ %> select2[<%=x%>][<%=y%>] = new Option("<%=ca.getZone()[x][y]%>" , "<%=ca.getZone()[x][y]%>"); <% } } %> } <!-- //根據前一項選擇加載聯動數據 --> function sel() { var pp = document.fom.s1.options.selectedIndex ; var temp = document.fom.s2; for (i = 0; i < select2[pp].length; i++) { temp.options[i] = new Option(select2[pp][i].text, select2[pp][i].value); } temp.options[0].selected = true; } </script> </html>
Citys_Arr.java //用于讀取數據
package cc.apl330; public class Citys_Arr { private String[] citys = {"桂林","崇左"} ; private String[][] zone = { {"平樂","臨桂","荔浦","二塘"}, {"龍州","天等","花山","樂一"} } ; public String[] getCitys() { return citys; } public void setCitys(String[] citys) { this.citys = citys; } public String[][] getZone() { return zone; } public void setZone(String[][] zone) { this.zone = zone; } }
posted @ 2010-09-30 10:36 jack zhai 閱讀(108) | 評論 (0) | 編輯 收藏
1)將公共操作和域放置在超類
2)不要使用受保護的域
3)使用繼承實現“is-a”關系
4)除非所有繼承的方法都有意義,否則不要使用繼承
5)在覆蓋方法的時候,不要心跡預期的行為
6)使用多態,而非類型信息
7)不要過多地使用反射
posted @ 2010-08-23 12:39 jack zhai 閱讀(155) | 評論 (0) | 編輯 收藏
public class Person{ public static void main(String[] args) { Person p1 = new Person("p1","femail",15) ; Person p2 = new Person("p","mail", 20) ; Person p3 = new Person("p","mail", 20) ; System.out.println(p1.equals(p2)) ; System.out.println(p3.equals(p2)) ; } public Person() {} ; public Person(String name, String sex, int age) { super(); this.name = name; this.sex = sex; this.age = age; } public boolean equals(Object otherObject) { //檢測兩個引用是否指向同一對象 if( this == otherObject ) return true ; //檢測otherObject是否為空 if( null == otherObject) return false ; //檢測是否為同一個類 if( getClass() != otherObject.getClass() ) return false ; //將otherObject轉成Person類 Person person = (Person)otherObject ; return this.getName().equals(person.getName()) && this.getSex().equals(person.getSex()) && this.getAge() == person.getAge() ; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String name = null; public String sex = null ; public int age = 0 ; }
posted @ 2010-08-16 23:34 jack zhai 閱讀(111) | 評論 (0) | 編輯 收藏
equals方法具有以下特性:
1)自反性:對于任何非空引用 x ,x.equals(x) 應該返回 true。
2)對稱性:對于任何引用 x 和 y ,如果 x.equals(y)返回 true ,那么 y.equals(x) 也應該返回 true 。
3)傳遞性:對于任何引用 x 、y 和 z ,如果 x.equals(y) 返回 true ,y.equals(z) 返回 true ,那么 x.equals(z) 就應該返回 true 。
4)一致性:如果 x 和 y 引用的對象沒有發生變化,那么反復調用 x.equals(y) 應該返回同樣的結果。
5)對于任意非空引用 x ,x.equals(null) 應該返回false 。
posted @ 2010-08-16 21:18 jack zhai 閱讀(184) | 評論 (0) | 編輯 收藏
次序為:
1、static塊內代碼
2、自上而下的運行代碼
3、在try{}catch(){}finally{}內,在try{}內遇到return關鍵字的時候,就馬上跳到finally塊內執行。
4、執行完畢finally{}塊后就執行剛才的return語句
注意:finally內有return后,方法的其他地方就不能存在return。
public class Main { static{ System.out.println("static"); } public int test(){ try{ System.out.println("try") ; return 1 ; }catch(Exception e){ System.out.println(e.getMessage()) ; }finally{ System.out.println("finally") ; } return 3 ; } public static void main(String[] args) { int i = new Main().test() ; System.out.println("test:" + i ); } }
輸出結果為:
statictryfinallytest:1
posted @ 2010-08-09 10:11 jack zhai 閱讀(215) | 評論 (5) | 編輯 收藏
Powered by: BlogJava Copyright © jack zhai