Struts2框架的搭建以及核心配置

版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/88656520

   Struts2一个mvc框架 采用拦截器机制来处理用户的请求。


1、引入13个jar包到web项目的lib文件夹下面

每个jar包都有着不同的作用,附图有详解

注意commons-lang要引入3.0以上的版本,不然启动的时候回报错


2、拦截器配置

struts2的核心就是拦截器

怎么配置拦截器呢?

在web.xml里面配置,

  <!--拦截器在工作  --> 

 <filter>  <filter-name>struts2</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.Struts2PrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>

注意:

<filter-name>struts2</filter-name>中的struts2可以是任何名称,但是要和下面的  <filter-mapping>里面的<filter-name>一致

当然,由于做项目的时候程序比较复杂,struts2这个名称比ssh这个名称更有辨识度!

<?xml version="1.0" encoding="UTF-8"?>
<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>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!--拦截器在工作  -->
  <filter>
  <filter-name>ssh</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  
  </filter>
  <filter-mapping>
  <filter-name>ssh</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3、Action类

  1. 1

    这个类继承了ActionSupport类,ActionSupport类好处很多,以后会重点解释

    但是这个类在这里是没有起到什么作用的!

    看这个类,我们要知道,这个类的包名、方法名,返回的是yes就可以了

    package cn.com.day01;
    import com.opensymphony.xwork2.ActionSupport;
    public class ActionSupportClass extends ActionSupport{ 
       /**     *      */   
     private static final long serialVersionUID = 1L;
    /*author:命运的信徒  
       * date:2019/3/9   
      * arm:了解struts2的运作流程   
      */
    public String helloworld(){  
      System.out.println("Action类执行了");  
      return "yes";
    }
    }

    4、struts.xml文件的配置

  2. 1

    struts.xml直接放在src的根目录下面就可以了

    基础模板如下

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "struts-2.1.7.dtd" >
    <struts>
    <!-- 设置后缀名为action -->
    <constant name="struts.action.extension" value="action">
    </constant>
    <package name="tjn" namespace="/" extends="struts-default">
    <action name="hello" class="cn.com.day01.ActionSupportClass" method="helloworld">
    <result name="yes">/succese.jsp</result>
    </action>
    </package>
    </struts>


5、我们开始讲struts.xml里面的配置字段

5.1、<constant name="struts.action.extension" value="action"></constant>

的意思就是设置Action请求的后缀名为action,

什么意思?

当前台的一个请求,如hello.action,hello.kk,struts.xml只识别.action后缀名的为我这个配置文件的请求,其他的不是!

当然字段的配置可以放在src下面的一个struts.properties文件夹里面

也可以放在web.xml的init-param里面,

三种字段的配置,一般都是把字段放在struts.xml文件里面配置

附图为其他的配置字段的样式,三选一就可以了!

 

 


5.2、<package name="tjn" namespace="/" extends="struts-default"</package>

name="tjn"是包名,因为到后来项目的复杂,一个struts.xml中有多个package

所以name是唯一的标识符

namespace是命名空间,没什么用处

extends是继承的意思,一般都是继承struts-default,这个struts-default里面有许多的拦截器机制

也可以继承其他的包名!


5.3、<action name="hello" class="cn.com.day01.ActionSupportClass" method="helloworld"></action>

这个action中name="hello"对于的就是前台页面jsp中的请求的名称

如  <a href="hello.action">点我</a>

class就是要处理用户请求类的地址,一般ctrl+鼠标点击就可以进去

method就是这个类里面的方法

如果没有method,默认方法名是execute


5.4、<result name="yes">/succese.jsp</result>

name是类中的方法返回的字符串,如果没有name="yes"的话,默认返回的是success

/success.jsp:如果类中的方法返回的字符串==success的话,执行成功的话,页面就会跳转到success.jsp页面


6、前台页面jsp

<a href="hello.action">点我</a>

页面效果如下


7、struts执行的流程

1、当web项目启动的时候,StrutsPrepareAndExecuteFilter机制就开启了;

2、当前台页面jsp发送一个httpservlet请求的时候,可以是

<a href="success.jsp"></a>

 或<a href="hello.action">点我</a>

 或<a href="/项目名/LoginServlet">点我</a>

3、这一切都有ActionMapping来判断是不是Action请求,不是的话,就直接去http相应,如果是的话,就会把请求处理交给ActionProxy;

4、ActionProxy会通过配置管理器找到struts.xml文件,怎么找相应的action呢?通过创建Action ActionInvocation实例,Action ActionInvocation根据请求的名称<action name="hello"来找到Action类,在调用Action类之前,会经过各类的拦截器机制,这个拦截器机制是核心,后面会有很多的用处;

5、一旦Action执行结束,就会返回一个字符串,Action ActionInvocation就会负责查找result中name和字符串相符的result ,执行result;

6、产生的result信息返回给ActionInvocation,这个过程也会经过拦截器机制


注意:

struts.xml文件可以有多个,但是web项目启动的时候,从前台都后台默认的都是struts.xml文件,如果你想调用struts-demo.xml文件的话,可以在struts.xml文件中包含

<include file="struts-demo.xml"/>

这个写法是默认struts-demo.xml也在src根目录下面

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/88656520
今日推荐