天天看点

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属性, 则会赋值