Struts2的常见的配置文件介绍

1:package 定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)   常见属性及其说明:

    (1)name  包的名字;以方便在其他处引用此包,此属性是必须的。 包名不能重复;

    (2)extends 当前包继承自哪个包,用于声明继承的包。在struts中,包一定要继承struts-default ;

struts-default在struts-default.xml中定的包

   (3)abstract  表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错                     abstract=true  只有当当前的包被其他包继承时候才用!                     如:                         <package name="basePackage" extends="struts-default" abstract="true"></package>                         <package name="user" extends="basePackage">

   (4) namespace   指定名称空间,也就是访问此包下的Action需要访问的路径,默认为"/"                   作为路径的一部分                   访问路径=  http://localhost:8080/项目/名称空间/ActionName 2:action   配置请求路径与Action类的映射关系,                                        常见属性及其说明:          (1)name  请求路径名称,用于配置Action对象被请求的URL映射          (2)class 请求处理的aciton类的全名          (3)method 请求处理方法,设置请求Action对象时,调用对象的哪一个方法。        3:result                                                          常见属性及其说明:        (1)name  action处理方法返回值 。        (2)type  跳转的结果类型,用于设置返回结果的类型,如请求转发,重定向等。        (3)标签体中指定跳转的页面。

简单的配置如下所示:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- 生命包 -->
 8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
 9         <!-- 定义action -->
10         <action name="hello" class="com.bie.HelloAction" method="execute">
11             <!-- 显示成功的jsp页面 -->
12             <result name="success" type="dispatcher">success.jsp</result>
13         </action>
14     </package>
15 </struts>

4:通配符实现简化配置

第一步:引包,略过,前面已经写过

第二步:配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>struts2_20170219</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   
13   <!-- 引入struts2的核心过滤器 -->
14   <filter>
15       <!-- 过滤器的名称 -->
16       <filter-name>struts2</filter-name>
17       <!-- 过滤器类 -->
18       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
19   </filter>
20   <filter-mapping>
21       <!-- 过滤器名称 -->
22       <filter-name>struts2</filter-name>
23       <!-- 过滤器映射 -->
24       <url-pattern>/*</url-pattern>
25   </filter-mapping>
26 </web-app>

第三步:开发action

 1 package com.bie;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 /** 
 6 * @author BieHongLi 
 7 * @version 创建时间:2017年2月20日 下午1:29:55 
 8 * 
 9 */
10 public class RegisterAction extends ActionSupport{
11 
12     private static final long serialVersionUID = 1L;
13 
14     public String login(){
15         System.out.println("登陆的方法");
16         return SUCCESS;
17     }
18     
19     public String register(){
20         System.out.println("注册的方法");
21         return SUCCESS;
22     }
23 }

第四步:配置struts.xml,先使用了普通的方法,后使用了通配符进行配置;

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- 声明包 -->
 8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
 9         <!-- 定义action -->
10         <action name="hello" class="com.bie.HelloAction" method="execute">
11             <!-- 显示成功的jsp页面 -->
12             <result name="success" type="dispatcher">success.jsp</result>
13         </action>
14     </package>
15     
16     <!-- 声明包 -->
17     <package name="login" extends="struts-default" abstract="false" namespace="/">
18         <action name="login" class="com.bie.RegisterAction" method="login">
19             <result name="success">success.jsp</result>
20         </action>
21         
22         <action name="register" class="com.bie.RegisterAction" method="register">
23             <result name="success">success.jsp</result>
24         </action>
25     </package>
26     
27     <!-- 通配符的实现简单配置 -->
28     <package name="loginRegister" extends="struts-default" abstract="false" namespace="/">
29         <action name="login_*_*" class="com.bie.RegisterAction" method="{1}">
30              <result name="success">success.jsp</result>
31         </action>
32     </package>
33 </struts>

结果如下,访问的时候如此访问即可。

5:struts-default.xml详解 目录:struts-core.jar/struts-default.xml详解 内容:     (1):bean节点指定了struts在允许的时候创建的对象类型     (2):指定struts-default包【用户写的package一样要继承此包】     (3):package struts-default中定义了:         a:跳转的结果类型:             dispatcher转化,不指定默认为转发;             redirect重定向;             redirectAction重定向到action资源;             stream文件下载的时候使用;         b:定义了所有的拦截器;

定义了32个拦截器,     为了拦截器引用方便,可以通过定义栈的方式引用拦截器     此时如果引用了栈,栈中的拦截器都会被引用;         c:默认执行的拦截器栈,默认执行的action;             <default-interceptor-ref name="defaultStack"/>             <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

6:拦截器,拦截器功能与过滤器功能类似 相同点和不同点:     共同点:都是拦截资源的; 不同点:拦截器,拦截所有资源都可以,包括.jsp,servlet,css,js,img等等,过滤器是servlet的概念,可已在struts中使用和servlet中使用;                过滤器,只拦截action请求;是struts的概念,拦截器只在struts2中使用。          

7:struts2的执行流程     服务器启动     (1):加载项目web.xml     (2):创建struts核心过滤器,执行filter--->init()方法         struts-default.xml---》核心功能的初始化;         struts-plugin.xml---》struts的相关插件;         struts.xml用户编写的配置文件;     访问:         (3):用户访问action,服务器根据访问路径名称,找到对应的action配置,创建action对象。         (4):执行默认的拦截器栈中定义的18个拦截器。         (5):执行action的业务处理方法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王小雷

程序员必知的LinuxShell命令

程序员必知的LinuxShell命令 grep (Globle Regular Expression Print全局正则表达式) 命令是一种强大的文本搜索工具,...

2037
来自专栏iOS Developer

Bison眼中的iOS开发多线程是这样的(二)

1393
来自专栏软件开发 -- 分享 互助 成长

java入门

一、java的运行机制 高级语言的运行机制主要有编译型和解释型两种。 C/C++属于编译型语言,由专门的编译器针对特定的操作系统平台进行翻译,生成可执行代码,特...

20310
来自专栏chenssy

【死磕Java并发】—–J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE...

3514
来自专栏happyJared

Linux私房菜:文件目录权限那点事

共有十个位,注意到第一个字符为[-],表示文件;常见的还有d,代表目录(directory);l,表示连接档(link)

932
来自专栏cloudskyme

eclipse3.7插件构建自定义右键菜单

1.1 简介 在开发工具上添加自己需要的功能,可以基于eclipse的插件进行扩展以满足新功能的需要。下面就说说如何在eclipse上如何添加菜单项。 1.2 ...

4246
来自专栏转载gongluck的CSDN博客

UNPv13:#第1章#简介

概述 ? TCP本身并不提供记录结束标志:如果应用程序需要确定记录的边界,它就要自己去实现,已有一些常用的方法可供选择。从TCP套接字读取数据时,我们总...

3209
来自专栏我的技术专栏

Linux编译工具:gcc入门

1754
来自专栏数据库

JDBC常见错误及解决方案

最近很多同学在数据库编程这一块遇到了很多的问题,各种问题都有,但却苦于不知道怎么解决这些问题,以至于编程效率非常低。今天我就来总结一下在数据库编程时经常遇到的问...

2278
来自专栏Java技术栈

Java Jar包的压缩、解压使用指南

什么是jar包 JAR(Java Archive)是Java的归档文件,它是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。 如何打/解包 使用j...

4645

扫码关注云+社区

领取腾讯云代金券