使用Struts2开发web程序 Struts2的配置文件怎么写?主要是Struts.xml和web.xml文件。求高手赐教

解决方案 »

  1.   

    struts.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>
       
       <!--<constant name="struts.action.extension" value=".do"></constant>-->
     <!-- 这只浏览器时候缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
     <constant name="struts.serve.static.vrowserCache" value="false"></constant>
     <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认为false(生产环境下使用),开发阶段最好打开 -->
     <constant name="struts.serve.static.vrowserCache" value="true"></constant>
     <!-- 开发模式下使用,这样可以打印出更详细的错误信息 
     <constant name="struts.devMode" value="true"></constant>
      默认的试图主题 -->
     <constant name="struts.ui.theme" value="simple"></constant>
     <constant name="struts.custom.i18n.resources" value="message"/>
     
     
     
    <package name="common" extends="struts-default">



    <action name="changeKey" class="changeKey" >
    <result name="success" type="json"/> 
      <param name="excludeProperties">.*hibernateLazyInitializer </param>
    </action>
    </package></struts>


    web.xml<?xml version="1.0" encoding="UTF-8" ?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      
      <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>GBK</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>        
        </filter-mapping>    
    </web-app>
      

  2.   

    <action name="changeKey" class="changeKey" >
                <result name="success" type="json"/> 
                  <param name="excludeProperties">.*hibernateLazyInitializer </param>
            </action>
    这个是没删完的  ···   记得删掉
      

  3.   

    下载的struts2包中有例子,里面都有,copy下来改改么好了
      

  4.   

    定义一个struts。xml,放到src下面
    大体内容:<?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> <!-- 设置form样式 -->
    <constant name="struts.ui.theme" value="simple" />
            <!-- 和spring关联 -->
    <constant name="struts.objectFactory" value="spring" />
    <!-- 设置编码为utf-8 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 国际化 -->
    <constant name="struts.custom.i18n.resources" value="actionMesg"></constant>
            <!-- Filter -->
    <include file="config/struts/filter.xml" /> <package name="myPackage" extends="struts-default" namespace="/logon">
    <action name="logonAction" class="logonAction" method="doLogon">
    <result name="logonSuccess">/jsp/success.jsp</result>
    <result name="logonFailure">/jsp/failed.jsp</result>
    </action>
    <action name="logOutAction" class="logonAction" method="logOut">
    <result name="logOutSuccess">/jsp/index.jsp</result>
    </action>
    </package>
    <include file="config/struts/user.xml"></include>
    <include file="config/struts/sysprivilege.xml"></include>
    <include file="config/struts/role.xml"></include>
    </struts>这里有个比较好的东东就是 <include >标签
    通过这个标签可以把整个系统配置文件分成多个配置文件,可以按照模块进行分块,这样可读性更高。具体:
    先配置Filter<?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> <include file="struts-default.xml" /> <package name="filter" extends="struts-default">
    <interceptors>
    <interceptor name="authority" class="permissionInterceptor" />
    <interceptor-stack name="myStack">
    <interceptor-ref name="defaultStack" />
    <interceptor-ref name="authority" />
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack"></default-interceptor-ref>
    <global-results>
    <result name="nowrights" type="redirect">/jsp/system/lackedPower.jsp</result>
    <result name="loginIsNull" type="redirect">/jsp/system/loginIsNull.jsp</result>
    <result name="error" type="redirect">/jsp/system/sysError.jsp</result>
    </global-results>
    </package></struts>通过过滤器可以进行一些session的验证,当然也可以用struts配置的 extends 这个特性,定义一些全局跳转变量。比如:struts。xml里面有个 <include file="config/struts/user.xml"></include>对于 user。xml里面的所有action请求都要进行用户登录的验证、用户权限的验证。这样的话可以按照这种方式配置:
    user.xml<?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> <include file="config/struts/filter.xml" />
           <!-- 需要注意的就是这一块  extends=“filter”也就是 filter对应的 package的name -->
    <package name="userPackage" extends="filter" namespace="/user">
    <action name="toCreateUserAction" class="userAction" method="toInitUserCreate">
    <result name="success">/jsp/user/createUser.jsp</result>
    </action>
    <action name="createUserAction" class="userAction" method="createUser">
    <result name="success">/jsp/user/userInfo.jsp</result>
    <result name="error">/jsp/user/createUser.jsp</result>
    </action>
    <action name="seeAllUsersAction" class="userAction" method="seeAllUsers">
    <result name="success">/jsp/user/userList.jsp</result>
    <result name="error">/jsp/user/createUser.jsp</result>
    </action>
    </package>
    </struts>
    这里我每个action的result都定义了一个 error , 是因为出现error跳转之后页面跳转的不同,如果你的系统里面出错之后跳转到同一个错误提示页面。那么这里就不需要定义 error了,action里面的返回如果是 “error”的话会直接跳转到 filter里面定义的 error对应的页面。还有一点一定要注意的就是 ,在web。xml里,要加上这一块<filter>
    <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    这样系统才会使用struts2进行系统请求的拦截,struts2 才会生效。
      

  5.   

    下载官方的文档看最清楚了,里面还有例子呢,实在不行就copy过来,肯定没错
      

  6.   

    楼主如果闲struts包里面的例子麻烦,可以上网搜索一下,一大堆啊,google吧
      

  7.   

    web.xml<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
            <!--我是和spring整合的,这个监听器目的是在解析web.xml的同事解析spring.xml-->
    <listener>
    <listener-class>
                         org.springframework.web.context.ContextLoaderListener
                    </listener-class>
    </listener>

    <display-name>
    struts2.0
    </display-name>
       <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
       </welcome-file-list>
       <filter>
       <filter-name>struts2.0</filter-name>
       <filter-class>
                       org.apache.struts2.dispatcher.FilterDispatcher
                    </filter-class>
       </filter>
       <filter-mapping>
       <filter-name>struts2.0</filter-name>
       <url-pattern>/*</url-pattern>
       </filter-mapping>
      
       <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/spring.xml</param-value>
    </context-param>  
    </web-app>
    struts.xml<?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>
    <package name="struts2.0" extends="struts-default">
    <action name="login" class="com.zh.web.action.LoginAction">
    <result name="input">/login.jsp</result>
                            <!--正确后跳转的页面-->
    <result name="success">/result.jsp</result>
    <result name="failer">/login.jsp</result>
    </action>
    </package>
    </struts>
      

  8.   

    谢谢各位了  不知道你们有没有Struts2的教学视频或者是网站也行
      

  9.   

    [email protected]这是我的邮箱发这里就可以
      

  10.   

    <?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="com.wawi.gyzs.action" namespace="/gyzs" extends="struts-default">
    <result-types>
    <result-type name="json" class="com.googlecode.jsonplugin.JSONResult">
    <param name="root">jsonRoot</param>
    </result-type>
    </result-types>

    <!-- 项目信息 -->
    <action name="projectAction_*" method="{1}" class="com.wawi.gyzs.action.ProjectAction">
       <result name="list">/pages/project/projectList.vm</result>
       <result name="projectStatus">/pages/project/projectStatus.vm</result>
       <result name="changeProjectStatus">/pages/project/changeProjectStatus.vm</result>
       <result name="add">/pages/project/addProject.vm</result>
       <result name="edit">/pages/project/editProject.vm</result>
       <result name="projectcontract">/pages/project/projectcontractlist.vm</result>
       <result name="projectcontract2">/pages/project/projectcontract2list.vm</result>
       <result name="projectcontract3">/pages/project/projectcontract3list.vm</result>
       <result name="changeprojectcontract">/pages/project/changeprojectcontract.vm</result>
       <result name="changeprojectcontract2">/pages/project/changeprojectcontract2.vm</result>
       <result name="changeprojectcontract3">/pages/project/changeprojectcontract3.vm</result>
       <result name="delete" type="redirectAction">projectAction_list.htm</result>
       <result name="verifyProject">/pages/project/verifyProjectlist.vm</result>
       <result name="verify">/pages/project/verify.vm</result>
       <result name="cancelProject">/pages/project/cancelProject.vm</result>
       <result name="showProjectStatus">/pages/project/showProjectStatus.vm</result>
       <result name="showProjectBlow">/pages/project/showProjectBlow.vm</result>
       <result name="showVerifyProject">/pages/project/showVerifyProject.vm</result>
       <result name="showProject">/pages/project/showProject.vm</result>
       <result name="InvInfoDialog">/pages/project/InvInfoDialog.vm</result>
       <result name="chooseInvInfo">/pages/project/chooseInvInfo.vm</result>
       <result name="projectBlowList">/pages/project/projectBlowList.vm</result>
       <result name="projectBenefit">/pages/projectBenefit/list.vm</result>
        </action>     <!--项目信息 避免重复提交 -->
        <action name="projectActionToken_*" method="{1}" class="com.wawi.gyzs.action.ProjectAction">
       <result name="list">/pages/project/projectList.vm</result>
         <interceptor-ref name="token"/>
    <interceptor-ref name="defaultStack"/>
    <result name="invalid.token" type="velocity">/pages/system/error.vm</result>
        </action>     
        <action name="enterprise_*" method="{1}" class="com.wawi.gyzs.action.EnterpriseAction">
         <result name="list">/pages/enterprise/list.vm</result>
         <result name="add">/pages/enterprise/add.vm</result>
         <result name="edit">/pages/enterprise/edit.vm</result>
         <result name="view">/pages/enterprise/view.vm</result>
        </action>
        
        <action name="managementCategory_*" method="{1}" class="com.wawi.gyzs.action.ManagementCategoryAction">
        <result name="list">/pages/managementCategory/list.vm</result>
         <result name="add">/pages/managementCategory/add.vm</result>
         <result name="edit">/pages/managementCategory/edit.vm</result>
         <result name="view">/pages/managementCategory/view.vm</result>
        </action>
        
        <action name="projectAvailability_*" method="{1}"  class="com.wawi.gyzs.action.ProjectAvailability"  >
          <result name="projectList">/pages/projectAvailability/projectList.vm</result>
          <result name="list">/pages/projectAvailability/list.vm</result>
          <result name="add">/pages/projectAvailability/add.vm</result>
          <result name="relist" type="redirect">projectAvailability_list.htm?projectId=${projectId}</result>
        </action>
        
        <action name="projectBenefit_*" method="{1}"  class="com.wawi.gyzs.action.ProjectBenefitAction"  >
          <result name="projectList">/pages/projectBenefit/projectList.vm</result>
          <result name="projectList2">/pages/projectBenefit/projectList2.vm</result>
          <result name="list">/pages/projectBenefit/list.vm</result>
          <result name="list2">/pages/projectBenefit/list2.vm</result>
          <result name="add">/pages/projectBenefit/add.vm</result>
          <result name="addIsTrue">/pages/projectBenefit/addIsTrue.vm</result>
          <result name="relist" type="redirect"><![CDATA[projectBenefit_list.htm?projectId=${projectId}&add=${add}]]>
          </result>
          <result name="relist2" type="redirect"><![CDATA[projectBenefit_list.htm?projectId=${projectId}&add=${add}]]></result>
       <result name="projectBenefitSaved" type="redirect"><![CDATA[projectAction_projectBenefit.htm?projectId=${projectId}&msgstatus=0]]>
          </result>
        </action>

    <action name="area_*" method="{1}" class="com.wawi.gyzs.action.AreaAction">
        <result name="tree">/pages/area/tree.vm</result>
        <result name="index">/pages/area/index.vm</result>
        <result name="list">/pages/area/list.vm</result>
         <result name="add">/pages/area/add.vm</result>
         <result name="edit">/pages/area/edit.vm</result>
         <result name="delete" type="redirectAction">area_list.htm</result>
        </action>
         <!--行政区划  避免重复提交 -->
        <action name="areaToken_*" method="{1}" class="com.wawi.gyzs.action.AreaAction">
       <result name="add">/pages/area/add.vm</result>
         <interceptor-ref name="token"/>
    <interceptor-ref name="defaultStack"/>
    <result name="invalid.token" type="velocity">/pages/system/error.vm</result>
        </action>
            <action name="industryAction_*" method="{1}" class="com.wawi.gyzs.action.IndustryAction">
        <result name="list">/pages/industry/list.vm</result>
         <result name="add">/pages/industry/add.vm</result>
         <result name="edit">/pages/industry/edit.vm</result>
         <result name="view">/pages/industry/view.vm</result>
        </action>
        
        <action name="annex_*" method="{1}" class="com.wawi.gyzs.action.AnnexAction">
    <result name="download" type="stream">
    <param name="contentType">application/octet-stream</param>
    <param name="inputName">inputStream</param>
    <param name="contentDisposition">attachment;filename="${fileName}"</param>
    <param name="bufferSize">4096</param>
    </result>
    </action>

    <action name="reporter_*" method="{1}" class="com.wawi.gyzs.action.ReporterAction">
    <result name="industry_reporter">/pages/reporter/industry_reporter.vm</result>
    <result name="area_reporter">/pages/reporter/area_reporter.vm</result>
    <result name="all_reporter">/pages/reporter/all_reporter.vm</result>
    <result name="quProject_reporter">/pages/reporter/quProject_reporter.vm</result>
    <result name="quProjectList">/pages/reporter/quProjectList.vm</result>
    <result name="shiProjectList">/pages/reporter/shiProjectList.vm</result>
    <result name="showProject">/pages/reporter/showProject.vm</result>
    </action>
    </package>
    </struts>