第三天骆姐;
框架搭建
1.打開myeclispe
File=>New=>Web Project
2.輸入項(xiàng)目名 myTest并點(diǎn)擊Finish
3.添加Spring支持
右鍵項(xiàng)目名
MyEclispe=>Add Spring Capabilities...
如圖所示我們要選中Spring2.5下面的5項(xiàng)
1.Spring2.5 AOP Libraries
2.Spring2.5 Core Libraries
3.Spring2.5 Persistence Core Libraries
4.Spring2.5 Persistence JDBC Libraries
5.Spring2.5 Web Libraries
然后 Next==》Finish
2.添加Hibernate支持
右鍵項(xiàng)目名
MyEclispe=>Add Hibernate Capabilities...
點(diǎn)擊Next
繼續(xù)點(diǎn)擊Next镜粤,選中oracle
點(diǎn)擊Finish
3.添加Struts2支持
右鍵項(xiàng)目名
MyEclispe=>Add Struts Capabilities...
如圖所示,選中Struts2.1玻褪,然后點(diǎn)擊Next
選中兩項(xiàng)肉渴,點(diǎn)擊Finish
至此S2SH框架搭建完畢
上面紅框中的都可以去掉,換成jar包带射,儲(chǔ)存在
WebRoot=》WEB-INF=》lib文件夾里面
我把這個(gè)項(xiàng)目涉及到的所有jar同规,js,css窟社,圖片儲(chǔ)存在百度云盤里面捻浦,可供下載
同時(shí)我建立了四個(gè)包,導(dǎo)入了EasyUi所需js桥爽,css和圖片朱灿,使架構(gòu)更清晰
hibernate逆向工程
1.打開DB Browser視圖
2.雙擊oracle,然后雙擊Connected to oracle钠四,然后雙擊MYDB盗扒,按住Ctrl選中我們的四張表ALLCLASS,ERRORSUBJECT缀去,SUBJECT侣灶,USERINFO,然后右鍵選擇Hibernate Reverse Engineering
3.如圖缕碎,將各個(gè)數(shù)據(jù)補(bǔ)齊褥影,然后點(diǎn)擊Next
4.id Generator輸入sequence,直接點(diǎn)擊Finish
5.如圖咏雌,在com.jianshu.bean逆向生成了8個(gè)java類凡怎,4個(gè).hbm.xml文件 校焦,我們把含有DAO的4個(gè)java類移動(dòng)到com.jianshu.dao*
6.com.jianshu.bean里面有4個(gè)java類,4個(gè)hibernate配置文件统倒,每個(gè)配置文件對(duì)應(yīng)一個(gè)java類(也叫實(shí)體類)寨典,在這里不建議修改
7.在這里我自己動(dòng)手生成對(duì)應(yīng)的Action,Service
8.下一步由Spring接管這些java類,我們打開applicationContext.xml
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 數(shù)據(jù)源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:orcl">
</property>
<property name="username" value="mydb"></property>
<property name="password" value="mydb"></property>
</bean>
<!-- 緩沖了HIbernate自動(dòng)生成SQL語句和其他的映射數(shù)據(jù) 還緩沖了一些將來有可能重復(fù)利用的數(shù)據(jù) -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<!-- 在bean包里面都有對(duì)應(yīng)的配置文件 -->
<value>com/jianshu/bean/Userinfo.hbm.xml</value>
<value>com/jianshu/bean/Errorsubject.hbm.xml</value>
<value>com/jianshu/bean/Subject.hbm.xml</value>
<value>com/jianshu/bean/Allclass.hbm.xml</value></list>
</property>
</bean>
<!-- Hibernate事務(wù)管理 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 配置事務(wù)攔截 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="upd*" propagation="REQUIRED" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<!-- 配置aop房匆,配置對(duì)哪些類的方法進(jìn)行事務(wù)管理耸成,當(dāng)前com.myhopu.service包中的子包、類中所有方法需要 -->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.jianshu.service.*.*(..))" />
</aop:config>
<!-- dao層 在這里id的首字母要小寫 -->
<bean id="UserinfoDAO" class="com.jianshu.dao.UserinfoDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="ErrorsubjectDAO"
class="com.jianshu.dao.ErrorsubjectDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="SubjectDAO" class="com.jianshu.dao.SubjectDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="AllclassDAO" class="com.jianshu.dao.AllclassDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- service層 scope="prototype"在這里指單實(shí)例-->
<bean id="allclassService" class="com.jianshu.service.AllclassService" scope="prototype"/>
<bean id="subjectService" class="com.jianshu.service.SubjectService" scope="prototype"/>
<bean id="userinfoService" class="com.jianshu.service.UserinfoService" scope="prototype"/>
<bean id="errorsubjectService" class="com.jianshu.service.ErrorsubjectService" scope="prototype"/>
<!-- action層 -->
<bean id="allclassAction" class="com.jianshu.action.AllclassAction" scope="prototype"/>
<bean id="subjectAction" class="com.jianshu.action.SubjectAction" scope="prototype"/>
<bean id="userinfoAction" class="com.jianshu.action.UserinfoAction" scope="prototype"/>
<bean id="errorsubjectAction" class="com.jianshu.action.ErrorsubjectAction" scope="prototype"/>
</beans>
9.如圖浴鸿,是不是發(fā)現(xiàn)Spring中對(duì)應(yīng)的java文件圖標(biāo)右上角出現(xiàn)個(gè)“S”井氢,這就證明配置生效
同時(shí)在上圖我們看見了三個(gè)xml后綴的文件
分別是
1.web.xml ---------------------------用來初始化工程配置信息,啟動(dòng)加載級(jí)別岳链,寫過濾器或監(jiān)聽器等配置文件
2.struts.xml---------------------------判斷要調(diào)用哪個(gè)Action去處理用戶請(qǐng)求
3.applicationContext.xml---------ApplicationContext的中文意思是“應(yīng)用前后關(guān)系”毙沾,它繼承自BeanFactory接口,除了包含BeanFactory的所有功能之外宠页,在國際化支持左胞、資源訪問(如URL和文件)、事件傳播等
在這之中
applicationContext.xml已經(jīng)配置好了
讓我們看看web.xml把
<?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_2_5.xsd" version="2.5">
<display-name></display-name>
<!-- 指定了首頁举户,顯示時(shí)按順序從第一個(gè)找起烤宙,如果第一個(gè)存在,就顯示第一個(gè)俭嘁,后面的不起作用躺枕。如果第一個(gè)不存在,就找第二個(gè)供填,以此類推拐云。 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 用來定位applicationContext.xml文件的上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<filter>
<!-- Hibernate 允許對(duì)關(guān)聯(lián)對(duì)象、屬性進(jìn)行延遲加載近她,
但是必須保證延遲加載的操作限于同一個(gè) Hibernate Session 范圍之內(nèi)進(jìn)行叉瘩。
如果 Service 層返回一個(gè)啟用了延遲加載功能的領(lǐng)域?qū)ο蠼o Web 層,
當(dāng) Web 層訪問到那些需要延遲加載的數(shù)據(jù)時(shí)粘捎,
由于加載領(lǐng)域?qū)ο蟮?Hibernate Session 已經(jīng)關(guān)閉薇缅,這些導(dǎo)致延遲加載數(shù)據(jù)的訪問異常
而Spring為我們提供的OpenSessionInViewFilter過濾器為我們很好的解決了這個(gè)問題。
OpenSessionInViewFilter的主要功能是用來把一個(gè)Hibernate Session和一次完整的請(qǐng)求過程對(duì)應(yīng)的線程相綁定攒磨。
目的是為了實(shí)現(xiàn)"Open Session in View"的模式 -->
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<!-- struts2過濾器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<!-- 啟用延遲加載(openSessionInViewFilter) -->
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 啟用struts2過濾器 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- 配置Spring監(jiān)聽 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
接著我們打開strus.xml,添加包名
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/answer" extends="struts-default">
</package>
</struts>
第三天總結(jié)
1.搭建S2SH框架
2.逆向生成Dao泳桦,bean
3.對(duì)三個(gè)配置文件要理解
第四天:登錄