目錄結構:
一、建立web project
二、在src目錄下建立struts.xml ,使用include是為了友善分開各個action
<?xml version="1.0" encoding="utf-8" ?>
<!doctype struts public
"-//apache software foundation//dtd struts configuration 2.0//en"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 指定web應用的預設編碼集,相當于調用httpservletrequest的setcharacterencoding方法 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 設定浏覽器是否緩存靜态内容,預設值為true(生産環境下使用),開發階段最好關閉 -->
<constant name="struts.serve.static.browsercache" value="false" />
<!-- 當struts的配置檔案修改後,系統是否自動重新加載該檔案,預設值為false(生産環境下使用),開發階段最好打開 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 開發模式下使用,這樣可以列印出更詳細的錯誤資訊 -->
<constant name="struts.devmode" value="true" />
<include file="admin.xml" />
</struts>
還有admin.xml
<package name="admin" extends="struts-default">
<action name="admin_*" class="adminaction" method="{1}">
<result name="login">
/backend/main.jsp <!-- 頁面跳轉 -->
</result>
<result name="delsuc" type="redirectaction">
<param name="actionname">admin_login</param> <!-- action跳轉 -->
</action>
</package>
三、在src目錄增加hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!doctype hibernate-configuration public
"-//hibernate/hibernate configuration dtd 3.0//en"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- generated by myeclipse hibernate tools. -->
<hibernate-configuration>
<session-factory>
<mapping resource="com/d3/d3studio/model/admin.hbm.xml" />
</session-factory>
</hibernate-configuration>
四、在web-inf增加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:context="http://www.springframework.org/schema/context"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
">
<bean id="datasource" class="com.mchange.v2.c3p0.combopooleddatasource">
<!-- 指定連接配接資料庫的jdbc驅動 -->
<property name="driverclass">
<value>com.mysql.jdbc.driver</value>
</property>
<!-- 連接配接資料庫所用的url -->
<property name="jdbcurl">
<value>jdbc:mysql://localhost:3306/pacs</value>
</property>
<!-- 連接配接資料庫的使用者名 -->
<property name="user">
<value>root</value>
<!-- 連接配接資料庫的密碼 -->
<property name="password">
<!-- 設定資料庫連接配接池的最大連接配接數 -->
<property name="maxpoolsize">
<value>20</value>
<!-- 設定資料庫連接配接池的最小連接配接數 -->
<property name="minpoolsize">
<value>2</value>
<!-- 設定資料庫連接配接池的初始化連接配接數 -->
<property name="initialpoolsize">
<!-- 設定資料庫連接配接池的連接配接的最大空閑時間,機關為秒 -->
<property name="maxidletime">
</bean>
<bean id="sessionfactory"
class="org.springframework.orm.hibernate3.localsessionfactorybean">
<property name="datasource">
<ref bean="datasource" />
<property name="hibernateproperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.mysqldialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.fromat_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.autoreconnect">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.ehcacheprovider</prop>
</props>
</property>
<property name="mappingresources">
<list>
<value>com/d3/pacs/model/admin.hbm.xml</value> <-- 對應model包裡的映射 -->
</list>
<bean id="txmanager"
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
<property name="datasource" ref="datasource" />
<tx:annotation-driven transaction-manager="txmanager" />
<-- 使用spring的注入 -->
<bean id="admindao" class="com.d3.pacs.dao.admindao">
<property name="sessionfactory" ref="sessionfactory" />
<bean id="adminservice" class="com.d3.pacs.service.adminservice">
<property name="admindao" ref="admindao" />
<bean id="adminaction" class="com.d3.pacs.action.adminaction" scope="prototype">
<property name="adminservice" ref="adminservice" />
</beans>
五、web.xml需要修改
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<!-- 配置struct2-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class>
</filter>
<filter-mapping>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 啟動spring容器 -->
<listener>
<listener-class>org.springframework.web.context.contextloaderlistener</listener-class>
</listener>
<!-- 預設啟動項 -->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
六、編寫action
public class adminaction extends actionsupport {
private static logger logger = logger.getlogger(adminaction.class);
private adminservice adminservice;
private admin admin;
public adminservice getadminservice() {
return adminservice;
}
public void setadminservice(adminservice adminservice) {
this.adminservice = adminservice;
public admin getadmin() {
return admin;
public void setadmin(admin admin) {
this.admin = admin;
// 管理者登陸
public string login() {
if(adminservice.login(admin) !=null){
httpservletrequest request = servletactioncontext.getrequest();
httpsession session = request.getsession(true);
session.setattribute("admin1", admin);
return "login";
}
else
return "loginfail";
// 管理者注冊
public string regist() {
return "regist";
// 退出管理者
public string exit() {
httpservletrequest request = servletactioncontext.getrequest();
request.getsession().removeattribute("admin1");
return "exit";
}
七、 通路流程: 在jsp中送出action 送出表單<form id="login" action="/my/admin_login" method="post">
/my是我的tomcat自己定義的虛拟目錄, admin_* 對應的是admin.xml中 <action name="admin_*" class="adminaction" method="{1}">
通路admin_login 對應的就是action類中的public string login()的方法 ,根據此方法傳回的string
對應的也是admin.xml 中 ,傳回login則會跳刀main.jsp
<result name="login">
/backend/main.jsp <!-- 頁面跳轉 -->
</result>
<result name="regist">
<result name="delsuc" type="redirectaction">
<param name="actionname">admin_login</param> <!-- action跳轉 -->
另外,struts會自動比對類屬性和jsp中name
比如:
jsp裡面有 : <input class=txtusernamecssclass maxlength=20 name="name">
對應在action裡面,如果有name的屬性,隻要提供get,set方法,那麼jsp中的name就會傳到action
另外還可以: <input class=txtusernamecssclass maxlength=20 name="admin.name">
對應action裡面有個admin的類屬性且 admin有name屬性, 則會指派