ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>
< 一 > �/span> mySSH/WEB-INF 目录下编�/span> web.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
version = "2.4"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< servlet >
< servlet-name > actionServlet </ servlet-name >
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
< init-param >
< param-name > config </ param-name >
< param-value > /WEB-INF/struts-config.xml </ param-value >
</ init-param >
< load-on-startup > 1 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > actionServlet </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
</ web-app >
< äº?/span> > åœ?/span> mySSH/WEB-INF/jsp 目录下编写用æˆäh³¨å†Œé¡µé?/span> regedit.jsp
<%@ page contentType = "text/html;charset=GBK" %>
< html >
< head >< title > Spring,Struts å’?/span> Hibernate æ•´åˆå®žä¾‹ </ title ></ head >
<%
String msg=request.getAttribute( "msg" )== null ? "" :(String)request.getAttribute( "msg" );
%>
< body > <%= msg %>
< form action = "/mySSH/regedit.do" method = "post" >
用户å?/span> : < input type = "text" name = "name" value = "${user.username }"/><br>
密ç : < input type = "password" name = "password" value = "" />< br >
< input type = "submit" name = "method" value = " æäº¤ " />
</ form >
</ body >
</ html >
< ä¸?/span> > åœ?/span> mySSH/WEB-INF/jsp 目录下编写用æˆäh³¨å†ŒæˆåŠŸé¡µé?/span> success.jsp
<%@ page contentType = "text/html;charset=GBK" %>
< html >
< head >< title > Spring,Struts å’?/span> Hibernate æ•´åˆå®žä¾‹ </ title ></ head >
< body >
æäº¤æˆåŠŸ : ä½ è¾“å…¥çš„ç”¨æˆ·åæ˜¯ :${user.name }, å¯†ç æ˜?/span> :${user.password }
</ body >
</ html >
< å›?/span> > åœ?/span> com.gc.vo 包下¾~–写 POJO---User.java
package com.gc.vo;
public class User {
private String id ;
private String username ;
private String password ;
public User(String username,String password){
this . username =username;
this . password =password;
}
public User(){
}
public String getId() {
return id ;
}
public void setId(String id) {
this . id = id;
}
public String getPassword() {
return password ;
}
public void setPassword(String password) {
this . password = password;
}
public String getUsername() {
return username ;
}
public void setUsername(String username) {
this . username = username;
}
}
< äº?/span> > åœ?/span> com.gc.vo 包下¾~–å†™æ˜ å°„æ–‡äšg User.hbm.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
< hibernate-mapping >
< class name = "com.gc.vo.User" table = "user" >
< id name = "id" type = "java.lang.String" >
< generator class = "uuid.hex" ></ generator >
</ id >
< property name = "username"
type = "java.lang.String"
column = "username"
not-null = "true"
length = "32" >
</ property >
< property name = "password"
type = "java.lang.String"
column = "password"
not-null = "true"
length = "32" >
</ property >
</ class >
</ hibernate-mapping >
< å…?/span> > åœ?/span> com.gc.dao 包下¾~–写接壾c?/span> UserDAO.java
package com.gc.dao;
import com.gc.vo.*;
public interface UserDAO {
// 新增用户
public abstract void createUser(User user);
// 修改用户
public abstract void updateUser(User user);
// åˆ é™¤ç”¨æˆ·
public abstract void deleteUser(User user);
// 查询用户
public abstract User queryUser(String name);
}
< ä¸?/span> > åœ?/span> com.gc.dao.impl 包下¾~–写接壾c?/span> UserDAO 的实现类 UserDAOImpl.java
package com.gc.dao.impl;
import com.gc.dao.UserDAO;
import com.gc.vo.User;
import java.util.ArrayList;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.orm.toplink.SessionFactory;
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
// ä¾èµ–注入 SessionFactory
private SessionFactory sessionFactory ;
// 定义查询 SQL è¯æ°”
private String SQL = "from user u where u.username=?" ;
// 新增用户
public void createUser(User user){
this .getHibernateTemplate().save(user);
}
// 修改用户
public void updateUser(User user){
this .getHibernateTemplate().update(user);
}
// åˆ é™¤ç”¨æˆ·
public void deleteUser(User user){
this .getHibernateTemplate().delete(user);
}
// 查询用户
public User queryUser(String name){
List userList;
if ( this .getHibernateTemplate().find( SQL , name)== null )
userList= new ArrayList();
else
userList= this .getHibernateTemplate().find( SQL , name);
return (User)userList.get(0);
}
}
< å…?/span> > åœ?/span> mySSH/WEB-INF 目录下编å†?/span> Struts 的酾|®æ–‡ä»?/span> struts-config.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd" >
< struts-config >
<!-- 定义 formBean -->
< form-beans >
< form-bean name = "user" type = "com.gc.vo.User" />
</ form-beans >
< action-mappings >
< action path = "/regedit" type = "org.springframework.web.struts.DelegatingActionProxy" name = "user" >
< forward name = "success" path = "WEB-INF/jsp/success.jsp" ></ forward >
< forward name = "input" path = "WEB-INF/jsp/regedit.jsp" ></ forward >
</ action >
< action path = "/input" type = "org.apache.struts.actions.ForwardAction"
parameter = "/WEB-INF/jsp/regedit.jsp" >
</ action >
</ action-mappings >
<!-- 注册 Struts æ’äšg , ä¸?/span> Spring 相结å?/span> -->
< plug-in className = "org.springframework.web.struts.ContextLoaderPlugIn" >
< set-property property = "contextConfigLocation" value = "/WEB-INF/config.xml" />
</ plug-in >
</ struts-config >
< ä¹?/span> > åœ?/span> mySSH/WEB-INF 目录下编å†?/span> Spring 的酾|®æ–‡ä»?/span> config.xml
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/sring-beans.dtd" >
< beans >
< bean id = "regedit" class = "com.gc.service.impl.RegeditImpl" >
< property name = "userDAO" >
< ref local = "userDAO" />
</ property >
</ bean >
< bean name = "/regedit" class = "com.gc.action.RegeditAction" >
< property name = "regedit" >
< ref bean = "regedit" />
</ property >
</ bean >
< bean name = "/input" class = "com.gc.action.RegeditAction" >
< property name = "regedit" >
< ref bean = "regedit" />
</ property >
</ bean >
<!-- å®šä¹‰æ•°æ®æº?/span> -->
< bean id = "dataSource"
class = "org.apache.commons.dbcp.BasicDataSource"
destroy-method = "close" >
<!-- 讑֮šé©±åЍ -->
< property name = "driverClassName" >
< value > com.mysql.jdbc.Driver </ value >
</ property >
<!-- 讑֮š URL -->
< property name = "url" >
< value > jdbc:mysql://localhost:3306/mySSH </ value >
</ property >
<!-- 讑֮šç”¨æˆ·å?/span> -->
< property name = "username" >
< value > tang </ value >
</ property >
<!-- 讑֮šå¯†ç -->
< property name = "password" >
< value > admin </ value >
</ property >
</ bean >
<!-- å’?/span> Hibernate è”ç³»èµäh¥ -->
< bean id = "sessionFactory"
class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name = "dataSource" >
< ref bean = "dataSource" />
</ property >
< property name = "mappingResources" >
< list >
< value > com\gc\vo\User.hbm.xml </ value >
</ list >
</ property >
< property name = "hibernateProperties" >
< props >
< prop key = "hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
< prop key = "hibernate.show_sql" > true </ prop >
</ props >
</ property >
</ bean >
<!-- ˜q›è¡Œäº‹åŠ¡å¤„ç† -->
< bean id = "transactionManager"
class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
< property name = "sessionFactory" >
< ref bean = "sessionFactory" />
</ property >
</ bean >
<!-- ˜q›è¡Œäº‹åŠ¡ä»£ç† -->
< bean id = "userDAOProxy"
class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
< property name = "transactionManager" >
< ref bean = "transactionManager" />
</ property >
< property name = "target" >
< ref local = "userDAO" />
</ property >
</ bean >
< bean id = "userDAO" class = "com.gc.dao.impl.UserDAOImpl" >
< property name = "sessionFactory" >
< ref bean = "sessionFactory" />
</ property >
</ bean >
</ beans >
< å?/span> > åœ?/span> com.gc.action 包下¾~–写控制å™?/span> RegeditAction.java
package com.gc.action;
import com.gc.vo.User;
import com.gc.service.Regedit;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class RegeditAction extends Action{
private Regedit regedit ;
// ä¾èµ–注入
public Regedit getRegedit() {
return regedit ;
}
public void setRegedit(Regedit regedit) {
this . regedit = regedit;
}
public ActionForward execute(ActionMapping mapping,
ActionForm form,HttpServletRequest request,
HttpServletResponse response) throws Exception{
// ä¿å˜™åµé¢æäº¤çš„用户信æ?/span>
getRegedit().saveUser((User)form);
request.setAttribute( "user" ,(User)form);
return mapping.findForward( "success" );
}
}
< å一 > åœ?/span> com.gc.service 包下¾~–å†™ä¸šåŠ¡é€»è¾‘æŽ¥å£ Regedit.java
package com.gc.service;
import com.gc.vo.User;
public interface Regedit {
// ä¿å˜ç”¨æˆ·
public abstract void saveUser(User user);
}
< å二 > åœ?/span> com.gc.service 包下¾~–写具体的业务逻辑¾c?/span> RegeditImpl.java
package com.gc.service.impl;
import com.gc.dao.UserDAO;
import com.gc.service.Regedit;
import com.gc.vo.User;
public class RegeditImpl implements Regedit{
private UserDAO userDao ;
// ä¿å˜ç”¨æˆ·
public void saveUser(User user){
userDao .createUser(user);
}
// 修改用户
public void updateUser(User user){
userDao .updateUser(user);
}
// 修改用户
public void deleteUser(User user){
userDao .deleteUser(user);
}
// 查询用户
public User queryUser(String username){
return userDao .queryUser(username);
}
// ä¾èµ–注入
public UserDAO getUserDao() {
return userDao ;
}
public void setUserDao(UserDAO userDao) {
this . userDao = userDao;
}
}
Myeclipse3.1+ Tomcat5.0 +j2sdk1.5æå¾J2EE
首先讲一下环境酾|®ï¼Œæ³¨æ„我酾|®çš„环境是在xp下的åQŒä¸æ˜?/span>linux下的åQŒé…¾|®çš„大致‹¹ç¨‹å’Œæ“作系¾lŸæ— å…»I¼Œä»…仅是在具体的安装上有差别。而酾|®æˆåŠŸä¸Žå¦ï¼Œä¸Žæ“作系¾lŸæ— å…Ÿë€?/span>
  软äšgå®‰è£…åˆ†äØ“ä¸€ä¸‹å‡ ä¸ªéƒ¨åˆ†ï¼š
  1ã€?/span> java环境安装åQ?/span>
  ˜q™é‡Œä½¿ç”¨çš„æ˜¯jdk1.5åQ?/span>jdk1.4是ä¸å¯ä»¥çš?/span>åQ‰ï¼Œ˜q™ä¸ªå¯ä»¥åˆ?/span>sunå…¬å¸çš„网站去下è²åQ?/span>
  2ã€?/span> tomcat环境安装åQ?/span>
  tomcat的版本是5.0的,安装版或是解压版都是å¯ä»¥çš„ï¼›
  3ã€?/span> eclipse 3 安装åQ?/span>
  å¯ä»¥åŽÖM¸‹åˆ—地å€ä¸‹è²http://www.eclipse.org/downloads/index.php
  我下载的æ˜?/span> 3.1M4 版本åQŒè¿™ä¸ªç‰ˆæœ¬åº”该是比较新的ã€?/span> 4ã€?/span> tomcatæ’äšg安装åQ?/span>
  tomcatæ’äšg是è¦åˆîC¸‹é¢åœ°å€ä¸‹è²http://www.sysdeo.com/eclipse/tomcatPlugin.htmlåQŒä¸‹è½½ä¹‹å‰éœ€è¦æŸ¥çœ‹æ’件是å¦é€‚åˆeclipse的版本,我下载的æ˜?/span>tomcatPluginV3.zipåQ?/span>
  5ã€?/span> lombozæ’äšg安装åQ?/span>
  lombozæ’äšg需è¦ä¸‹è½½ä¸¤ä¸ªéƒ¨åˆ†ï¼Œä¸€ä¸ªæ˜¯emf环境åQŒå¦ä¸€ä¸ªæ˜¯lombozæ’äšgåQŒåˆ†åˆ«åˆ°ä¸‹åˆ—地方åŽÀL‰¾
http://forge.objectweb.org/project/showfiles.php?group_id=97
http://download.eclipse.org/tools/emf/scripts/downloads.php#goto2.1.0I
  我下载的æ˜?/span>emf-sdo-runtime-I200412160800.zipå’?/span>org.objectweb.lomboz_3.1.0.N20050106.zip åQ?/span>
  ˜q™é‡Œä¸»è¦æ˜¯æ ¹æ?/span>eclipse选择适当çš?/span>lombozæ’äšgåQŒç„¶åŽæŸ¥çœ‹ä¸€ä¸?/span>lombozæ’äšgçš?/span> 介ç»åQŒé‚£é‡Œä¼šä»‹ç»éœ€è¦çš„emfæ’äšg的版本,然åŽå†å޻䏋é¢çš„åœ°å€æ‰?/span>emfæ’äšgã€?/span>
  好了åQŒè¯¥ä¸‹è²çš„都有了åQŒä¸‹é¢æˆ‘介ç»ä¸€ä¸‹å¦‚何安装和é…ç½®ã€?/span>
  一�/span> java环境安装
  ˜q™ä¸ªåªè¦ç›´æŽ¥å®‰è£…ž®±å¯ä»¥äº†åQŒä¸˜q‡æœ€å¥½èƒ½å®‰è£…在系¾lŸç›˜ä»¥å¤–的地方,˜q™æ ·å¯ä»¥æ›´å¥½ç†è§£jvm的酾|®ï¼›å®‰è£…好了以åŽåQŒéœ€è¦é…¾|®çŽ¯å¢ƒå˜é‡ï¼Œæ–°å¾JAVA_HOMEåQŒåƈ且酾|?/span>pathåQŒæŠŠjdkçš?/span>bin目录æ·ÕdŠ ˜q›åŽ»åQŒè¿™æ ·å°±å¯ä»¥åœ¨å‘½ä»¤è¡Œçš„ä“Q何èµ\径ä‹Éç”?/span>jdk的命令了ã€?/span>
  [‹¹‹è¯•] åQšç¼–写一ä¸?/span>hello world½E‹åºåQŒç„¶åŽåœ¨dos下ä‹Éç”?/span>javac hello.javaå’?/span>java hello命ä×oåQŒå¦‚æžœå¯ä»¥æ£å¸¸æ‰§è¡Œï¼Œž®Þp¯æ˜?/span>jdk安装æˆåŠŸäº†ã€?/span>
  二�/span> tomcat安装
  解压版的直接解压ž®±å¯ä»¥äº†åQŒç„¶åŽé…¾|?/span>TOMCAT_HOMEåQŒå®‰è£…ç‰ˆçš„è¦æ³¨æ„的两点,一个是安装完之å?/span>tomcatçš„æœåŠ¡å°±èƒ½å¤Ÿå¯åŠ¨çš„äº†åQŒä½†æ˜¯è¿˜æ˜¯è¦é…ç½®TOMCAT_HOMEåQ›ç¬¬äºŒä¸ªž®±æ˜¯éœ€è¦æŸ¥çœ‹ä¸€ä¸‹å®‰è£…ç¨‹åºæ˜¯ä¸æ˜¯æŠ?/span>tomcatæœåŠ¡æ³¨å†ŒæˆäØ“windowsçš„å¯åЍæœåŠ¡ï¼Œéœ€è¦åˆ°“æœåŠ¡”里查看,如果有这个选项ž®±æŠŠå®ƒè®¾¾|®äؓ手动å¯åЍåQŒåÆˆä¸”å…ˆåœæ¢˜q™ä¸ªæœåŠ¡ã€?/span>
  [‹¹‹è¯•]åQšä‹Éç”?/span>startup.bat命ä×oåQŒæœåŠ¡æ£å¸¸å¯åЍ之åŽï¼Œie‹¹è§ˆå™¨é‡Œè¾“å…¥
  http://localhost:8080/ 如果出现æ£å¸¸çš„å°çŒ«é¡µé¢ï¼Œé‚£å°±åº”该没有问题了ã€?/span>
  三�/span> eclipse 3安装
  eclipse的安装倒是很简å•,åªè¦è§£åŽ‹åQŒç„¶åŽæŠŠeclipse目录å¤åˆ¶åˆ°ç›˜½W¦ä¸‹ž®±å¯ä»¥äº†åQŒå¯åŠ¨çš„æ—¶å€™ï¼Œ¾pÈ»Ÿä¼šè‡ªåЍ坻æ‰?/span>jvmåQŒå½“ç„¶å¯ä»¥å†ä»¥åŽé…ç½®åQŒä½†æ˜¯å¥½åƒæ˜¯å¿…须先安è£?/span>jdkã€?/span>
  四ã€?/span> tomcatæ’äšg安装åQ?/span>emfæ’äšg安装åQ?/span>lombozæ’äšg安装
  ˜q™å‡ 部分的æ¥éª¤éƒ½æ˜¯ä¸€æ ïLš„åQŒè§£åŽ‹èÊY件包åQŒç„¶åŽæ ¹æ®é‡Œé¢çš„目录¾l“æž„åQŒæŠŠç›®å½•æ–‡äšg分别å¤åˆ¶åˆ?/span>featureæˆ?/span>plugins目录里,˜q™æ ·ž®Þp¡Œäº†ï¼Œä¸‹é¢ž®†è¯¦¾l†è®²˜qîC¸€ä¸?/span>eclipse的酾|®ã€?/span>
  五ã€?/span> é…ç½®eclipse
  1ã€?/span> 首先åQŒæ‰“å¼€é…ç½®ç•Œé¢ window->preferencesã€‚å¦‚æžœè¿™å‡ ä¸ªæ’äšg安装æˆåŠŸåQŒå·¦è¾¹çš„列表里应该有lombozå’?/span>tomcat的选项。如果没有,‹‚€æŸ¥ä¸Šé¢çš„æ¥éª¤æ˜¯ä¸æ˜¯æ£¼‹®ã€?/span>
  点击java->Installed JREsåQŒç„¶åŽæ˜¾½Cºå¦‚上,如果是åˆå§‹å®‰è£…çš„åQŒåªæœ‰æ˜¾½Cºç¬¬ä¸€ä¸?/span>jreåQˆä¸è¦é—®æˆ‘什么是jreåQŒè‡ªå·±æŸ¥èµ„料去)åQŒé‚£æ˜¯ç³»¾lŸé»˜è®¤çš„安装åœ?/span>c盘的jreåQŒå¦‚果系¾lŸå½“ä¸å®‰è£…了多个jdkåQŒé‚£ä¹ˆæœ€å¥½è¿˜æ˜¯æ–°å»ÞZ¸€ä¸ªï¼Œç‚¹å‡»addåQŒç„¶åŽé€‰æ‹©ä½ 需è¦ä‹É用的jdk的佾|®ï¼Œç„¶åŽå®ƒä¼šè‡ªåЍå¯ÀL‰¾å…¶ä»–çš„å‚æ•ŽÍ¼Œç‚¹å‡»ok。返回界é¢ä¹‹åŽï¼Œä¸è¦å¿˜è®°ç‚šw€‰åˆšåˆšæ·»åŠ çš„jdkåQŒè¦ä¸ç„¶æ˜¯æ²¡æœ‰ç”¨çš„。然åŽç‚¹å‡?/span>ok关闘q™ä¸ª½H—å£
一ã€å®‰è£?/span>j2sdk1.5åQŒè®¾å®šçŽ¯å¢ƒå˜é‡ã€?/span>
  
  我的安装目录æ˜?/span> D:\j2sdk ã€?/span> 所以设定环境å˜é‡å¦‚下:
  
  æ“作åQ?/span> My Computer(å³é”®) ----> Properties ----> Advanced ----> Environment Variables :
  
 
  讑֮šçŽ¯å¢ƒå˜é‡ä¸ºï¼š
  
  1. (æ–°å¾)JAVA_HOME: D:\j2sdk
  
  2. (æ–°å¾)CLASSPATH: .;D:\j2sdk\lib\dt.jar;D:\j2sdk\lib\tools.jar (注æ„åQšç‚¹å·ä¸èƒ½çœç•¥ï¼Œè¡¨ç¤ºå½“å‰ç›®å½•)
  
  3. ¾~–辑PATHçš„å˜é‡å€û|¼Œåœ¨åŽé¢åŠ ä¸?/span> ;%JAVA_HOME%\bin åQˆæ³¨æ„ï¼šè¦æœ‰åˆ†å·éš”å¼€åQ?/span>
  
  到这里,j2sdk安装完毕åQŒç”¨å‘½ä×o½Ž€å•测试一ä¸?/span>: java -version
  
 
  二ã€å®‰è£?/strong>Tomcat5.0
  
  åŽÖM¸‹è½½ä¸€ä¸?/span>Tomcatçš?/span>zip版, 我用的是 jakarta-tomcat-5.0.28.zip åQ?/span> ä¸ä¸‹å®‰è£…版的目的是å¯ä»¥ä‹É用多ä¸?/span>Tomcatã€?/span>
  
  直接解压¾~©åˆ° G 盘:
  
 
  三ã€å®‰è£?/strong>Eclipse3.1
  
  下è²åœ°å€åQ?/span>http://www.eclipse.org/downloads/index.php 扑ֈ°ä¸‹é¢çš„页é¢ï¼š
  
 
  找个亚洲的æœåС噍䏋è²,速度会快一ç‚V€‚在flashgetä¸å¦‚下:
  
 
  直接解压¾~©å°±å¯ä»¥ç”¨äº†åQŒæˆ‘是解压羃åœ?/span> G 盘:
  
 
  到这里, Eclipse3.1 安装完毕�/span>
  
  四ã€å®‰è£?/strong> Myeclipse4.0 (myeclipse䏿˜¯å…费的,所以我们先下è²ä¸€ä¸ªè¯•用版åQŒå†åŽÈ½‘上下载一个注册机)
  
  下è²ç‰ˆæœ¬åQ?/span> MyEclipse Enterprise Workbench 4.0 GA for Windows 98/2000/XP (8/29/2005) 如下图:
  
 
  åœ?/span>flashget下è²ä¸æ˜¾½Cºå¦‚下:
  
 
  下è²å®ŒæˆåŽï¼Œå¼€å§‹å®‰è£…:
  
  1. é€‰æ‹©ä½ çš„eclipse所在目录,其它都点下一æ¥ï¼Œé»˜è®¤å®‰è£…ã€?/span>
  
 
  2.安装完毕之åŽåQŒæ‰¾åˆ?/span>myeclipse的安装目录, 如下图所½Cºï¼š
  
 
  3. ž®?/span>featureså’?/span>plugins˜q?/span>2个目录å¤åˆ¶å‡ºæ¥ã€‚è¿™æ ·åšçš„目的是ä¸ÞZº†åœ¨ä¸€å°ç”µ(sh¨´)脑上å¯ä»¥ä½¿ç”¨å¤šä¸ªç‹¬ç«‹çš?/span>eclipseå¼€å‘åã^å°ã€‚如下图所½Cºï¼š
  
 
  4. ž®†åˆšæ‰å®‰è£…çš„ myeclipse åˆ é™¤åQˆå安装åQ‰ã€?/span>
  
  5. ž®†ç¬¬3æ¥å¤åˆ¶çš„featureså’?/span>plugins˜q?/span>2个目å½?/span>, 覆盖åˆ?/span> G
  
 
  解释一下上é¢åšçš„åŽŸå› ï¼š å› äØ“myeclipseæ˜?/span>eclipseçš„æ’ä»Óž¼Œæ‰€ä»¥åªè¦æŠŠfeatureså’?/span>plugins˜q?/span>2个目录覆盖在eclipse的相应目录,eclipseä¼šè‡ªåŠ¨è®¤å‡ø™¿™äº›æ’ä»¶ã€?/span>
  
  到这一æ¥ï¼Œmyeclipse½Ž—是安装完毕ã€?/span> G 盘目录如下:
  
 
  五ã€ç ´è§?/strong>myeclipse4.0
  
  1.åŽ?/span>googleæœçƒ¦ä¸‹è²ä¸€ä¸ªæ³¨å†Œæœºã€‚如下图åQ?/span>
  
 
  2. 输入åå—åQŒç®—åøP¼Œå¦‚下图:
  
 
  3.˜q行eclipse.exe, 讑֮šåŒç›®å½•下çš?/span>workspaceåQ?/span> 如下图:
  
4.myeclipseæ’äšgå·²ç»è¢«è‡ªåŠ¨è®¤å‡ºï¼Œå¦‚ä¸‹å›¾ï¼š
  
 
  5. 点击 Window ----> Preferences ----> Subscription ----> Enter Subscription, 输入注册ç ï¼Œç ´è§£myeclipseåQŒä¸‹å›¾ï¼š
  
 
  到这里,myeclipseç ´è§£å®Œæ¯•ã€?/span>
  
  å…ã€è®¾å®?/strong>myeclipseçš?/span> jdk å’?/span> tomcat æœåС噍ã€?/span>
  
  1. å¢žåŠ ä¸€ä¸?/span>jreåQ?/span> 点击 Window ----> Preferences ----> Installed JREs ----> Add 如下图:åQˆæ‰¾åˆ°è‡ªå·Þqš„j2sdk安装目录åQ?/span>
  
 
  2. 指定TomcatæœåŠ¡å™¨ï¼ŒWindow ----> Preferences ----> Tomcat5, òq¶è®¾å®šè¯¥tomcat所用的jreä¸ºæˆ‘ä»¬ä¸Šä¸€æ¥æ–°å¢žçš„。如下é¢2个图åQ?/span>
  
 
  
 
  到这一æ¥ï¼Œæˆ‘们的开å‘环境就æå¾å®Œæ¯•了ã€?/span>
  
ã€€ã€€ä¸ƒã€æ–°å»ÞZ¸€ä¸ªé¡¹ç›®æ¥è¯•一试?
  
  1. 点击 File ----> New ----> Project , 选择Web ProjectåQ?/span> å†ç‚¹ä¸‹ä¸€æ¥ï¼Œ 如下图:
  
 
  2. åœ?/span> Project Name ä¸è¾“å…?/span>teståQ?/span> ç‚?/span> finishã€?/span> 如下图:
  
 
  3. å¼€å‘工兯‚‡ªåŠ¨ç”Ÿæˆäº†test™å¹ç›®ã€?/span> 如下图:
  
 
  4.点击 WebRoot ----> (å³é”®)New ----> JSP , æ–°å¾ä¸€ä¸?/span> JSP ™åµé¢ åQ?/span>hello.jspåQ‰ï¼Œ 如下图:
  
 
  5. ¾~–辑器生æˆçš„æ˜?/span>jspæ–‡äšg是按模æ¿ç”Ÿæˆçš„, ½Ž€å•修改一下, 代ç 如下图:
  
 
  6. å†ç”¨åŒæ ·çš„æ–¹æ³•, æ–°å¾ä¸€ä¸ªå« hello_result.jsp çš?/span>JSPæ–‡äšgåQ?/span> 代ç 如下图:
  
 
  7. deployåQˆéƒ¨¾|ÔŒ¼‰˜q™ä¸ªtest™å¹ç›®ã€?/span> 如下图: åQˆç”¨é»‘线ç”ÖMº†çš„æŒ‰é’®å°±æ˜?/span> deploy 的按钮) åQ?/span> 在弹出窗å£ç‚¹ AddåQ?/span> 部çÖvtest™å¹ç›®ã€?/span>
  
 
  8. å¯åЍTomcatæœåŠ¡å™¨ã€‚å¦‚ä¸‹å›¾åQ?/span> åQˆç”¨é»‘线ç”ÖMº†çš„æŒ‰é’®å°±æ˜?/span> å¯åЍTomcat 的按钮)
  
 
  9. Tomcat å¯åŠ¨è¾“å‡ºä¿¡æ¯å¦‚下图:
  
 
  10. ¾|‘页讉K—®å’Œç»“果图.
  
 
  
  到这里,¾lˆäºŽæžå®Œäº†ï¼åQï¼å¤§å®¶å¯ä»¥åŽ?/span>eclipseçš?/span>workspace目录下看çœ?/span>test™å¹ç›®çš„代ç ,也å¯ä»¥åŽ»Tomcatçš?/span>webapps目录下,看看部çÖv之åŽçš?/span> test™å¹ç›®çš„结构ã€?/span>
Java2容器¾cȱ»åº“的用途是“ä¿å˜å¯¹è±¡”åQŒå®ƒåˆ†äؓ两类åQ?/span>
Collection----一¾l„ç‹¬ç«‹çš„å…ƒç´ åQŒé€šå¸¸˜q™äº›å…ƒç´ 都æœä»ŽæŸ¿U规则ã€?/span>Listå¿…é¡»ä¿æŒå…ƒç´ 特定的顺åºï¼Œè€?/span>Setä¸èƒ½æœ‰é‡å¤å…ƒç´ ã€?/span>
Map----一¾l„æˆå¯¹çš„“键值对”对象åQŒå³å…¶å…ƒç´ 是æˆå¯¹çš„对象,最典型的应用就是数æ®å—典,òq¶ä¸”˜q˜æœ‰å…¶å®ƒòq¿æ³›çš„应用。å¦å¤–,Mapå¯ä»¥˜q”回其所有键¾l„æˆçš?/span>Set和其所有值组æˆçš„CollectionåQŒæˆ–å…‰™”®å€¼å¯¹¾l„æˆçš?/span>SetåQŒåƈ且还å¯ä»¥åƒæ•°¾l„一æ äh‰©å±•多¾l?/span>MapåQŒåªè¦è®©Mapä¸é”®å€¼å¯¹çš„æ¯ä¸?#8220;å€?#8221;是一ä¸?/span>Mapå›_¯ã€?/span>
1.˜q代å™?/font>
˜q代器是一¿U设计模å¼ï¼Œå®ƒæ˜¯ä¸€ä¸ªå¯¹è±¡ï¼Œå®ƒå¯ä»¥éåŽ†åÆˆé€‰æ‹©åºåˆ—ä¸çš„对象åQŒè€Œå¼€å‘äh员ä¸éœ€è¦äº†è§£è¯¥åºåˆ—的底层结构。è„P代器通常被称ä¸?#8220;轻釾U?#8221;对象åQŒå› 为创建它的代价å°ã€?/span>
Javaä¸çš„Iterator功能比较½Ž€å•,òq¶ä¸”åªèƒ½å•å‘¿UÕdЍåQ?/span>
(1) 使用æ–ÒŽ(gu¨©)³•iterator()è¦æ±‚容器˜q”回一ä¸?/span>Iterator。第一‹Æ¡è°ƒç”?/span>Iteratorçš?/span>next()æ–ÒŽ(gu¨©)³•æ—Óž¼Œå®ƒè¿”回åºåˆ—çš„½W¬ä¸€ä¸ªå…ƒç´ ã€?/span>
(2) 使用next()获得åºåˆ—ä¸çš„ä¸‹ä¸€ä¸ªå…ƒç´ ã€?/span>
(3) 使用hasNext()‹‚€æŸ¥åºåˆ—䏿˜¯å¦˜q˜æœ‰å…ƒç´ ã€?/span>
(4) 使用remove()ž®†è„Pä»£å™¨æ–°è¿”å›žçš„å…ƒç´ åˆ é™¤ã€?/span>
Iteratoræ˜?/span>Java˜q代器最½Ž€å•的实现åQŒäØ“List设计çš?/span>ListIteratorå…ähœ‰æ›´å¤šçš„功能,它å¯ä»¥ä»Žä¸¤ä¸ªæ–¹å‘é历ListåQŒä¹Ÿå¯ä»¥ä»?/span>List䏿’å…¥å’Œåˆ é™¤å…ƒç´ ã€?/span>
2.List的功能方�/span>
List(interface): ‹Æ¡åºæ˜?/span>List最é‡è¦çš„特点;它确ä¿ç»´æŠ¤å…ƒç´ 特定的™åºåºã€?/span>Listä¸?/span>Collectionæ·ÕdŠ äº†è®¸å¤šæ–¹æ³•ï¼Œä½¿å¾—èƒ½å¤Ÿå?/span>Listä¸é—´æ’入与移除元ç´?/span>(åªæŽ¨è?/span>LinkedList使用)。一ä¸?/span>Listå¯ä»¥ç”ŸæˆListIteratoråQŒä‹É用它å¯ä»¥ä»Žä¸¤ä¸ªæ–¹å‘éåŽ?/span>ListåQŒä¹Ÿå¯ä»¥ä»?/span>Listä¸é—´æ’å…¥å’Œåˆ é™¤å…ƒç´ ã€?/span>
ArrayList: 由数¾l„实现的List。它å…è®¸å¯¹å…ƒç´ è¿›è¡Œå¿«é€Ÿéšæœø™®¿é—®ï¼Œä½†æ˜¯å?/span>Listä¸é—´æ’å…¥ä¸Žç§»é™¤å…ƒç´ çš„é€Ÿåº¦å¾ˆæ…¢ã€?/span>ListIteratoråªåº”该用æ¥ç”±åŽå‘å‰éåŽ?/span>ArrayListåQŒè€Œä¸æ˜¯ç”¨æ¥æ’å…¥å’Œåˆ é™¤å…ƒç´ åQŒå› 䏸™¿™æ¯?/span>LinkedList开销è¦å¤§å¾ˆå¤šã€?/span>
LinkedList: 寚w¡ºåºè®¿é—®è¿›è¡Œäº†ä¼˜åŒ–åQŒå‘Listä¸é—´æ’å…¥ä¸Žåˆ é™¤å¾—å¼€é”€ä¸å¤§åQŒéšæœø™®¿é—®åˆ™ç›¸å¯¹è¾ƒæ…¢(å¯ç”¨ArrayList代替)。它å…ähœ‰æ–ÒŽ(gu¨©)³•addFirst()ã€?/span>addLast()ã€?/span>getFirst()ã€?/span>getLast()ã€?/span>removeFirst()ã€?/span>removeLast()åQŒè¿™äº›æ–¹æ³?/span>(没有在ä“Qä½•æŽ¥å£æˆ–基类ä¸å®šä¹‰è¿‡)使得LinkedListå¯ä»¥å½“ä½œå †æ ˆã€é˜Ÿåˆ—å’ŒåŒå‘队列使用ã€?/span>
3.Set的功能方�/span>
Set(interface): å˜å…¥Setçš„æ¯ä¸ªå…ƒç´ å¿…™åÀL˜¯å”¯ä¸€çš„ï¼Œå› äØ“Setä¸ä¿å˜é‡å¤å…ƒç´ ã€‚åŠ å…?/span>Setçš?/span>Object必须定义equals()æ–ÒŽ(gu¨©)³•以确ä¿å¯¹è±¡çš„唯一性ã€?/span>Setä¸?/span>Collection有完全一æ ïLš„æŽ¥å£ã€?/span>Set接å£ä¸ä¿è¯ç»´æŠ¤å…ƒç´ çš„‹Æ¡åºã€?/span>
HashSet: 为快速查找而设计的Set。å˜å…?/span>HashSet的对象必™åÕd®šä¹?/span>hashCode()ã€?/span>
TreeSet: ä¿æŒ‹Æ¡åºçš?/span>SetåQŒåº•å±‚äØ“æ ‘ç»“æž„ã€‚ä‹É用它å¯ä»¥ä»?/span>Set䏿喿œ‰åºçš„åºåˆ—ã€?/span>
LinkedHashSet: å…ähœ‰HashSet的查询速度åQŒä¸”内部使用链表¾l´æŠ¤å…ƒç´ 的顺åº?/span>(æ’入的次åº?/span>)。于是在使用˜q代器éåŽ?/span>Setæ—Óž¼Œ¾l“æžœä¼šæŒ‰å…ƒç´ æ’å…¥çš„æ¬¡åºæ˜¾½Cºã€?/span>
HashSeté‡‡ç”¨æ•£åˆ—å‡½æ•°å¯¹å…ƒç´ è¿›è¡ŒæŽ’åºï¼Œ˜q™æ˜¯ä¸“门为快速查询而设计的åQ?/span>TreeSet采用¾U¢é»‘æ ‘çš„æ•°æ®¾l“æž„˜q›è¡ŒæŽ’åºå…ƒç´ åQ?/span>LinkedHashSetå†…éƒ¨ä½¿ç”¨æ•£åˆ—ä»¥åŠ å¿«æŸ¥è¯¢é€Ÿåº¦åQŒåŒæ—¶ä‹Éç”¨é“¾è¡¨ç»´æŠ¤å…ƒç´ çš„‹Æ¡åºåQŒä‹É得看èµäh¥å…ƒç´ 是以æ’入的顺åºä¿å˜çš„ã€‚éœ€è¦æ³¨æ„的是,生æˆè‡ªå·±çš„ç±»æ—Óž¼ŒSet需è¦ç»´æŠ¤å…ƒç´ çš„å˜å‚¨™åºåºåQŒå› æ¤è¦å®žçްComparable接å£òq¶å®šä¹?/span>compareTo()æ–ÒŽ(gu¨©)³•ã€?br>