天天看點

ssh架構搭建

目錄結構:

ssh架構搭建

一、建立web project

二、在src目錄下建立struts.xml  ,使用include是為了友善分開各個action

ssh架構搭建

<?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

ssh架構搭建

    <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

ssh架構搭建

<?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

ssh架構搭建

<?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需要修改

ssh架構搭建

<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

ssh架構搭建

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屬性, 則會指派