struts如何配置文件?struts配置文件介绍

阳光 2022-03-08 16:04:06 java常见问答 4361

struts是一个web框架,Struts主要有Taglib和页面导航这两个优点。Taglib是Struts的标记库,灵活多用,能大大提高开发效率。那struts如何配置文件?下面来我们就来给大家讲解一下struts配置文件介绍。

1:package 定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)

常见属性及其说明:

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

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

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

(3)abstract 表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错

abstract=true 只有当当前的包被其他包继承时候才用!

如:

(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)标签体中指定跳转的页面。

简单的配置如下所示:

<?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="helloWorld" extends="struts-default" abstract="false" namespace="/">
        <!-- 定义action -->
        <action name="hello" class="com.bie.HelloAction" method="execute">
            <!-- 显示成功的jsp页面 -->
            <result name="success" type="dispatcher">success.jsp</result>
        </action>
    </package>
</struts>

4:通配符实现简化配置

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

第二步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
  <display-name>struts2_20170219</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <!-- 引入struts2的核心过滤器 -->
  <filter>
      <!-- 过滤器的名称 -->
      <filter-name>struts2</filter-name>
      <!-- 过滤器类 -->
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <!-- 过滤器名称 -->
      <filter-name>struts2</filter-name>
      <!-- 过滤器映射 -->
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

第三步:开发action

package com.bie;
import com.opensymphony.xwork2.ActionSupport;
/**
 * @author BieHongLi
 * @version 创建时间:2017年2月20日 下午1:29:55
 *
 */
public class RegisterAction extends ActionSupport
{
    private static final long serialVersionUID = 1 L;
    public String login()
    {
        System.out.println("登陆的方法");
        return SUCCESS;
    }
    public String register()
    {
        System.out.println("注册的方法");
        return SUCCESS;
    }
}

第四步:配置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="helloWorld" extends="struts-default" abstract="false" namespace="/">
        <!-- 定义action -->
        <action name="hello" class="com.bie.HelloAction" method="execute">
            <!-- 显示成功的jsp页面 -->
            <result name="success" type="dispatcher">success.jsp</result>
        </action>
    </package>
    <!-- 声明包 -->
    <package name="login" extends="struts-default" abstract="false" namespace="/">
        <action name="login" class="com.bie.RegisterAction" method="login">
            <result name="success">success.jsp</result>
        </action>
        <action name="register" class="com.bie.RegisterAction" method="register">
            <result name="success">success.jsp</result>
        </action>
    </package>
    <!-- 通配符的实现简单配置 -->
    <package name="loginRegister" extends="struts-default" abstract="false" namespace="/">
        <action name="login_*_*" class="com.bie.RegisterAction" method="{1}">
             <result name="success">success.jsp</result>
        </action>
    </package>
</struts>

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

struts如何配置文件?struts配置文件介绍.jpg

1.jpg

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;

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的业务处理方法。

将struts文件配置好,我们就可以进行使用,struts能够使程序更加规范化,使程序开发的效率提高,并且也能维护程序的安全性!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

简单的java程序代码怎么写?写java代码有什么技巧?

json数组是有序的吗?json数组如何入门?

java面试题怎么背?java面试题有哪些?