




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.一、準(zhǔn)備工作:MyEclipse 整合 SSH 步驟(基于操作和配置文件):1. JDK -> jdk1.6.0_17 安裝(環(huán)境變量配置):JAVA_HOME = C: jdk1.6.0_17;PATH = %JAVA_HOME%bin; %JAVA_HOME%jrebin;CLASSPATH = .;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;在 Cmd -> java version 查看 JDK 的版本是否與剛配好的版本一致。2. apache-tomcat-6.0.24:解壓即可;3. myEclipse 8.5:安裝(略)
2、:最高可提供:框架:Java EE 5Spring 3.0Hibernate 3.3Struts 2.14. DB:以 MySQL 5.1 為例。二、打開 myEclipse 先配置好 Tomcat 服務(wù)器和 JDK 操作好下圖所示:1. Window -> Preferences -> Java: Installed JREs在這里可以不使用 myEclipse 自帶的 JDK,得 Add自己安裝好的 JDK:2. Window -> Preferences -> MyEclipse -> Servers: Tomcat 6.x在這里配置 Tomcat 服務(wù)器,
3、我們這里是選擇 6.x。Browse自己將 Tomcat 解壓放的目錄,再選擇 Enable,將它啟用,然后 Apply 應(yīng)用一下就 Ok 了。13. Window -> Preferences: Tomcat 6.x -> JDK 選擇前面我們配好的 JDK 版本。24. 現(xiàn)在我們來啟動 Tomcat 服務(wù)器,打開內(nèi)部的瀏覽器測試 Tomcat 有沒有配置成功,如下圖所示:則表示 Tomcat 服務(wù)器配置成功。5. Window -> Preferences -> Java -> Build Path: User Libraries 在這里配置用戶自己要用 ja
4、r 包的 Libraries。<說明> 這一步可以到后面需要添加自己的 jar 包時,再做也可以的。6. Window -> Preferences -> Java Build Path:在這里將自己上面配置好的 Libraries 添加到編譯請求的路徑里。<說明> 這一步可以到后面需要添加自己的 jar 包時,再做也可以的。3三、創(chuàng)建好 Web 項目,最先 Add Spring 如下圖所示:1. 選擇項目名,右擊 ->MyEclipse ->Add Spring Capabilities2. 勾選好 Spring3.0 的五個核心 Librar
5、ies,注意將它們 Copy 到/WebRoot/WEB-INF/lib 目錄下,再點擊 Next > :453. 完成后,項目中將會出現(xiàn) Spring 添加的東西,有時候可能會出現(xiàn)不名的錯誤,現(xiàn)在暫時不需管它(推薦刷新項目),有些原因是因為 Spring 的 Xml 配置文件里引入的東西有沖突。四、創(chuàng)建數(shù)據(jù)源,切換到 MyEclipse Database Explorer 窗口,如下圖所示:61. 在左邊 DB Browser 的窗口里,右擊選擇 New新建一個數(shù)據(jù)源,出如下圖所示的窗口:根據(jù)自己項目所建的數(shù)據(jù)庫來選擇配置,引入連接驅(qū)動 JARs 包。2. 配好后,點擊 Test Dr
6、iver 來測試配置連接是否成功。下圖所示則表示成功了,再進(jìn)行下一步操作。73. Schema Details 選擇連接映射的數(shù)據(jù)庫,沒必要將全部的數(shù)據(jù)庫連接進(jìn)來。4. 配置好以后,然后選擇它將它 Open connection打開看一看,能否將數(shù)據(jù)連接過來:8五、再將窗口切換回來,現(xiàn)在添加 Hibernate 3.31. 選擇項目名,右擊 ->MyEclipse ->Add Hibernate Capabilities,這里可以選擇支持Annotations 注解方式來進(jìn)行 SSH 的集成。注意將 Library Copy 到/WebRoot/WEB-INF/lib 目錄下:2.
7、 在對話框中選擇 Spring configuration file,表示我們希望將 Hibernate 托管給 Spring進(jìn)行管理,這是將 Hibernate 與 Spring 進(jìn)行整合的基礎(chǔ)。然后點擊 Next:3. 在出現(xiàn)的對話框中選擇 Existing Spring configuration file。因為我們已經(jīng)添加了 Spring的配置文件,所以這里選擇的是已存在的配置文件。MyEclipse 會自動找到存在的那個文件。9然后在 SessionFactory ID 中輸入 Hibernate 的 SessionFactory 在 Spring 配置文件中的 Bean ID的名字
8、,這里我們輸入 sessionFactory 即可。然后點擊 Next:4. 在出現(xiàn)的對話框中的 Bean Id 里面輸入數(shù)據(jù)源在 Spring 中的 Bean ID 的名字,這里我們輸入 dataSource。然后在 DB Driver 里面選擇我們剛剛配置好的 ssh,MyEclipse 會將其余的信息自動填寫到表格里面。然后點擊 Next105. 在出現(xiàn)的對話框中取消 Create SessionFactory class。點擊 Finish 即可。六、最后再 Add Struts Capabilities: Struts2.1 1. 選擇 Struts 2.x 之后配置窗口會變成下圖所
9、示,導(dǎo)入 Struts2.1 的 Jars 不可選入到/WebRoot/WEB-INF/lib 目錄下。(以后我們再講怎自己手動 Add Struts 整合)112. 下一步再根據(jù)自己的情況另勾選 Struts 集成的應(yīng)用包,F(xiàn)inish 一下就好了。第二種: 自己手動添加 Struts 整合:找到自己收錄的 Struts 2.x 架包,手動將 Jars Ctrl+C再 Ctrl+V 到/WebRoot/WEB-INF/lib 目錄下, 再將主要的 xml 配置文件 struts.xml 拷貝到/src/目錄下即可。到這里,我們整個項目的框架就算初步成形了,下面我們可以到 MyEclipse
10、Java Enterprise視圖下查看一下整個項目的結(jié)構(gòu),再進(jìn)行后續(xù)操作。如下圖所示:12七、Hibernate Reverse Engineering 反向生成 Pojo 類,自動生成映射關(guān)系:1. 再進(jìn)入到 MyEclipse Database Explorer 視圖,全選中所有的表,右擊選擇 HibernateReverse Engineering操作,如下圖所示:132. Java src folder: 選項 Browse到自己新建好的包下面,我這里是放到 Model(或者DTO)層,如下圖所示:3. 再選擇*.hbm.xml 和 POJO 映射,注意我們不需選擇:Create a
11、bstract class,再 Next:144. 下一步再選擇 Id Generator 的生成策略,我們選 native,再點 Next>,如下圖所示:5. 接下來,默認(rèn)選項,直接點擊 Finish 完成這項操作,如下圖所示:156. 最后回到 MyEclipse Java Enterprise 視圖,查看是否已成功生成映射文件,如下圖所示:到這里我們就將 SSH 整合的所有操作都做好了,接下來就是進(jìn)行編碼工作,修改相應(yīng)的XML 配置文件,最后到完成項目,發(fā)布 web 項目, 啟動 web 服務(wù)器,運行測試項目。祝君馬到成功!*八、添加在 Web.xml 文件里的配置:1. Spri
12、ng 和 Struts 集成的配置,加載 Spring 容器:(Struts.x 的方式: servlet、plug-in):<!- 配置FilterDispatcher過濾器,以便加Spring容器 -><filter><filter-name>FilterDispatcher</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping&g
13、t;<filter-name>FilterDispatcher</filter-name><url-pattern>/*</url-pattern></filter-mapping><!- 配置Spring容器:指定Spring文件的路徑,讓spring知道事務(wù)管理的bean所在-><context-param><param-name>contextConfigLocation</param-name><!- /WEB-INF/applicationContext-*.xml,cl
14、asspath*:applicationContext-*.xml -><param-value>/WEB-INF/applicationContext.xml</param-value></context-param>16<!- 在Struts2感知下,Spring容器的加載 -><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
15、2. 添加連接池的配置,這里以 Proxool 為例:<!- 添加讀連接池配置文件的servlet節(jié)點 -><servlet><servlet-name>proxoolServletConfigurator</servlet-name><servlet-class>xool.configuration.ServletConfigurator</servlet-class><init-param><param-name>xmlFile</param-n
16、ame><param-value>/WEB-INF/ProxoolConf.xml</param-value></init-param><!- 由于proxool要先加載,所以啟動優(yōu)先級要比spring高,否則在spring加載時會報錯 -> <load-on-startup>0</load-on-startup></servlet>3. 添加事務(wù)配置 Hibernate 使用 Session 的關(guān)閉與開啟由 spring 來管理,針對 Hivernate懶加載;把一個 Hibernate Session
17、 和一次完整的請求過程對應(yīng)的線程相綁定:<!-配置 OpenSessionInViewFilter或OpenSessionInViewInterceptor -><filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class><!- singleSession默認(rèn)為true,若設(shè)為false則等
18、于沒用OpenSessionInView -><init-param><param-name>singleSession</param-name><param-value>true</param-value><init-param></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.do(/*)</url-pattern></fi
19、lter-mapping>4. 添加字符編碼過濾器:<!- Character Encoding 配置 -><filter><filter-name>Spring character encoding filter</filter-name><filter-class>17org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-
20、name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>Spring character encoding filter</filter-name><url-pattern>/*</url-pattern></filter-mapping>5. 引入 DWR 框架,做 Ajax 應(yīng)用:<!- 引入DWR框架 -><servlet>&
21、lt;servlet-name>DWRServlet</servlet-name><servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class><init-param><param-name>debug</param-name><param-value>true</param-value></init-param><load-on-startup>2</load-on-startup&
22、gt;</servlet><servlet-mapping><servlet-name>DWRServlet</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping>另外附加 2.連接池配置 :DBCP、Proxool、C3P0、JNDI 方式1. 導(dǎo)入連接池 Jar 包:Copy 到/WEB-INF/lib 目錄下;修改好連接池的配置文件并將它 Copy 到/WEB-INF/目錄下。2. 在 applicationContext.xml
23、 中改 dataSource 節(jié)點(后續(xù)會講)。九、添加在 Spring 的 applicationContext.xml 文件里的配置:1. 連接池 dataSource 的配置:<!- 連接池 dataSource的配置 -><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"value="org.log
24、xool.ProxoolDriver"></property><property name="url" value="proxool.DBPool"></property></bean><bean id="sessionFactory"18">class="org.springframework.orm.hibernate3.LocalSessionFactoryBean<property name=&q
25、uot;dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop><!- Show SQL語句設(shè)置 -><prop key="hibernate.s
26、how_sql">true</prop><prop key="hibernate.format_sql">true</prop></props></property><property name="mappingResources"><list><value>com/./DTO/SysUser.hbm.xml</value><value>com/./DTO/SysRole.hbm.xml</value><
27、;value>com/./DTO/SysRight.hbm.xml</value>. .</list></property></bean>2. 添加處理業(yè)務(wù)邏輯的 Beans,可以是 DAOImpl、_Interceptor、導(dǎo)入 xml 文件等:<!- 處理整個用戶業(yè)務(wù)操作的DAO一個Bean -> <bean id="userDAO" class="com.Java7Group4CRM.DAOImp.SysUserDAOImp"><property name=&quo
28、t;sessionFactory" ref="sessionFactory"></property></bean><!- 處理用戶登錄的Action -><bean id="loginAction"class="com.*.Actions.LoginAction" scope="prototype"><property name="userDAo" ref="userDAO"></propert
29、y></bean><!- 驗證用戶權(quán)限的全局?jǐn)r截器 -><bean id="action2ActionInterceptor"class="com.*.interceptor.Action2ActionInterceptor"></bean>3. 配置事務(wù)管理.相當(dāng)于 Spring AOP 面向切面的配置:A. 配置spring提供的事務(wù)管理的bean: HibernateTransactionManager對象.<!- spring提供的事務(wù)管理的bean -><bean id=&
30、quot;transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property>19</bean>B. 配置spring提供的將事務(wù)管理作為切面的作用于目標(biāo)對象的代理bean:TransactionProxyFactoryBean對象.<!-
31、spring提供的 將事務(wù)管理 作為切面 作用于目標(biāo)對象的代理 bean -><bean id="proxyObj"class="erceptor.TransactionProxyFactoryBean" abstract="true"> <!這是一個抽象類,只供類(target對象)繼承 -><property name="transactionManager" ref="transactionMa
32、nager" /><property name="transactionAttributes"><!-下面是配置出管理事務(wù)對應(yīng)的(Dao的)方法 -><props><prop key="up*">PROPAGATION_REQUIRED</prop></props></property></bean>C.現(xiàn)在可以配置target目標(biāo)對象(Dao).這里與普通的Dao配置不同<bean id="accountDao" p
33、arent="proxyObj"><!這里指明其父類為以上代理bean -><property name="target"><!-下面用匿名bean用作它本身的屬性作為目標(biāo)對象 -><bean class="com.*.daoimp.AccountDaoImp"><property name="sessionFactory" ref="sessionFactory"></property></bean>&l
34、t;/property></bean><!- 導(dǎo)入其他模塊的配置文件 -><import resource="applicationContext_basd.xml"/>十、添加在 Struts2.x 中 struts.xml 文件的配置:1. 在主 struts.xml 配置文件里,可以引入其他模塊的 struts_*.xml 文件和處理亂碼的配置:<!- 導(dǎo)入其他模塊的Actions配置文件 -><include file="struts_right.xml"/><!- 處理編碼
35、亂碼的問題 -><constant name="struts.i18n.encoding" value="gbk"/>2. 模塊化的 struts_*.xml 配置文件:添加 Spring 代理:<!- 作國際化用的全局的資源文件的配置 -><!-<constant name="struts.custom.i18n.resources" value="resourceFile"/>-><!-通過url來匹配action是由spring來生成action,須
36、在struts.xml中這里配置一個相當(dāng)于Spring的代理添加StrutsSpringObjectFactory所在的架包struts2-spring-plugin.jar到”/WEB-INF/lib”下-><constant name="struts.objectFactory"value="org.apache.struts2.spring.StrutsSpringObjectFactory" />20<!- CRM數(shù)據(jù)字典模塊:分模塊以<package>標(biāo)簽分開 -> <package name=&
37、quot;CRM_Basd" extends="struts-default"><interceptors><!- 功能模塊的攔截器的聲明 -><interceptor name="isAction2Action"class="action2ActionInterceptor"/><interceptor name="rightInterceptor" class="rightInterceptor"/><!- 聲明一個作局部
38、的權(quán)限攔截器椎棧 -><interceptor-stack name="rightStack"><interceptor-ref name="rightInterceptor" /><interceptor-ref name="defaultStack" /></interceptor-stack><!- 作全局?jǐn)r截器椎棧區(qū)分Action跳轉(zhuǎn)到Action -><interceptor-stack name="globalStack">&
39、lt;interceptor-ref name="isAction2Action" /><interceptor-ref name="defaultStack" /></interceptor-stack></interceptors><!- 應(yīng)用全局的攔截器椎棧 -><default-interceptor-ref name="globalStack" /><global-results><result name="none"&g
40、t;/html/rightError.jsp</result></global-results><!- = 數(shù)據(jù)字典業(yè)務(wù)處理的Action /= -><!- 加載數(shù)據(jù)字典條目BasDict并分頁使用的Action -><action name="loadBasDictAction" class="basDictAction"method="loadBasDict"><!- 加入局部權(quán)限攔截 -><interceptor-ref name="righ
41、tStack"></interceptor-ref><result name="success">/html/basd/dict.jsp</result><result name="input">/html/basd/dict.jsp</result></action><action name="basDictLinkAction1" class="basDictAction"method="link1Pages
42、"><!- 未加入局部攔截器,全局?jǐn)r截器將起效 -><result name="success">/html/basd/dict.jsp</result><result name="input">/html/basd/dict.jsp</result></action></package><!- CRM數(shù)據(jù)字典模塊結(jié)束,下面可接其他??斓?lt;package> ->21十一、組織編寫代碼:1. DAO 接口實現(xiàn)層對象的核心代碼:/成員化
43、HibernateTemplate對象:private HibernateTemplate hibernateTemplate;/提供注入HibernateTemplate對象的setSessionFactory()方法public void setSessionFactory(SessionFactory sessionFactory) this.hibernateTemplate = new HibernateTemplate(sessionFactory);/用戶登錄方法public List loginUser(final SysUser user) throws ExceptionL
44、ist loginUser = (List) hibernateTemplate.execute(newHibernateCallback()public Object doInHibernate(Session session)throws HibernateException, SQLException Query q = session.createQuery("from SysUser u where u.usrName=? and u.usrPassword=?");q.setParameter(0, user.getUsrName();q.setParamete
45、r(1, user.getUsrPassword();return q.list(););return loginUser;/*用戶登錄后:獲取TA的角色*/public SysRole getUserRole(SysUser loginUser) throws ExceptionSysRole role = null;String hql = "from SysRole sr where sr.roleId="+loginUser.getSysRole().getRoleId().toString().trim();role = (SysRole)hibernateTem
46、plate.find(hql).get(0);return role;2. Action的核心代碼:public class LoginAction extends ActionSupport implements ServletRequestAware /IoC注入一個Request和DAOprivate HttpServletRequest request;private SysUserDAOImp userDAo;public void setServletRequest(HttpServletRequest request) this.request = request;22publi
47、c void setUserDAo(SysUserDAOImp userDAo) this.userDAo = userDAo;private String usrName;private String usrPassword;. ./表單字段public String login() throws Exception System.out.println("usrName: "+usrName);Map session = null;SysUser user = new SysUser();user.setUsrName(usrName);user.setUsrPassw
48、ord(usrPassword);List list = userDAo.loginUser(user);/排除驗證完成后未查到符合的數(shù)據(jù)行時,調(diào)用get(0)索引溢出異常if(list.size()!=0)/ 使用作用域?qū)ο笕萜鰽ctionContextSysUser loginUser = (SysUser)list.get(0);session = ActionContext.getContext().getSession();session.put("logId", loginUser.getUsrId();session.put("logName&quo
49、t;, loginUser.getUsrName();/*登錄成功以后,再獲取用戶的角色*/SysRole loginRole = userDAo.getUserRole(loginUser);String roleName = loginRole.getRoleName();session.put("roleName", roleName);/*得到用戶登錄的角色以后,再獲取用戶所擁有的權(quán)限集合(操作節(jié)點集合) * 并將它保存到Session作用域中,以做權(quán)限校驗*/List rights = userDAo.getUserRight(loginRole);session
50、.put("rightList", rights);System.out.println("logId:" + loginUser.getUsrId();return SUCCESS;elsereturn INPUT;public void validateLogin() /表單驗證if(this.usrName=null|"".equals(this.usrName)addFieldError("usrName", "用戶名不能為空");23if(usrPassword=null|"".equals(usrPassword)addFieldError("usrPassword", "登錄密碼不能為空");/作用域?qū)ο髠髦担簉equest.setAttribute("productPageDB", pageDB);request.getSession(false).getAttribute("logId")Map session = ActionContext.getContext().getSession();session.put("logI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安醫(yī)學(xué)院《數(shù)字地形測量學(xué)(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 漯河職業(yè)技術(shù)學(xué)院《城市規(guī)劃原理A》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶理工大學(xué)《無機非金屬材料計算機應(yīng)用基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鹽城幼兒師范高等??茖W(xué)?!吨参镔Y源學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東建筑大學(xué)《舞蹈訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省無錫市宜城環(huán)科園教聯(lián)盟2025屆初三第二學(xué)期學(xué)生月考測試卷(2.22)物理試題試卷含附加題含解析
- 山東電力高等??茖W(xué)?!段⑸镔Y源與利用》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東財經(jīng)大學(xué)《視頻編輯》2023-2024學(xué)年第二學(xué)期期末試卷
- 襄陽職業(yè)技術(shù)學(xué)院《數(shù)字視頻特技》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇州托普信息職業(yè)技術(shù)學(xué)院《互聯(lián)網(wǎng)開發(fā)JavaWeb全棧技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年中鐵開投、中鐵云投招聘筆試參考題庫含答案解析
- 《如何帶教新人》課件
- 2024年05月江蘇省昆山鹿城村鎮(zhèn)銀行2024年社會招考筆試歷年參考題庫附帶答案詳解
- 2024四川省火鍋行業(yè)發(fā)展白皮書
- 《食管基本解剖》課件
- DB36T 1179-2019 政務(wù)數(shù)據(jù)共享技術(shù)規(guī)范
- 《腫瘤與營養(yǎng)》課件
- 食品安全與傳染病預(yù)防
- 市政基礎(chǔ)設(shè)施施工現(xiàn)場綠色施工管理臺賬
- 承建工程合同
- DB11∕T 1251-2015 金屬非金屬礦山建設(shè)生產(chǎn)安全規(guī)范
評論
0/150
提交評論