Struts2学习笔记(一)--入门常见配置

 Struts2框架的学习路线

第一天:Struts2的概述、Struts2的入门、Struts2常见的配置、Struts2Action的编写

第二天:Struts2的数据的封装、结果页面配置

第三天:Struts2的值栈和OGNL表达式

第四天:Struts2的标签库

Struts2的概述

 

 Struts2是一个基于MVC设计模式的WEB层框架

 Struts2的内核相对于Struts1来讲已经发生巨大变化。

 常见的web层框架

Struts2

Struts1

Webwork

SpringMVC

Web层框架基于前端控制器模型设计

 下载Struts2的开发环境   http://struts.apache.org/

 解压Struts2开发包

 

apps :Struts2提供的应用,war文件:web项目打成war包。直接放入到tomcat可以允许。

 docs :Struts2的开发文档和API

 lib :Strtus2框架的开发的jar

 src :Struts2的源码

创建web项目,引入jar

 引入jar

struts-blank项目下找jar

 

创建一个JSP页面

 

<body>
   <h1>Struts2的入门</h1>
  <!--点击连接会触发相应的反应--> <h3><a href="hello.action">Struts2的入门</a></h3> </body>

编写Action的类

 对Action进行配置

src下创建(提供)名称叫做struts.xml的配置文件。注意名字不可以改变,src目录下的是主要的

 配置前端控制器(核心过滤器)

 

 这是web.xml中的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    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_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.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中的方法的返回值

 

public class HelloAction {
    
     public String execute(){
         System.out.println("HelloAction执行了......");
         return "sucess";
     }
}

改写struts.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- Struts2为了管理Action的配置,通过包进行管理 -->
<!-- 配置Struts2的包============================== -->
<!-- package中的名字随意,但是在配置文件中不可以重复 -->
    <package name="demo1" extends="struts-default" namespace="/">
         <!-- 配置Action==action中的名字必须是刚刚页面中的xxx.action==class部分是对应的的类的路径地址 -->
         <action name="hello" class="com.zyz.struts.HelloAction">
              <!-- 配置跳转页面===当类中返回的是sucess那么就会设定跳转到相应的界面==== -->
              <result name="sucess">/demo1/sucess.jsp</result>
         </action>
    </package>
</struts>

编写sucess.jsp

分析Struts2的执行流程

当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转。

Struts2的常见配置

Struts2的配置文件的加载顺序(了解)

 init_DefaultProperties() ----加载default.properties

init_TraditionalXmlConfigurations(); ----加载struts-default.xmlstruts-plugin.xmlstruts.xml

init_LegacyStrutsProperties(); ----加载struts.properties

init_CustomConfigurationProviders();  ----加载配置提供类

init_FilterInitParameters() ; // [6] ----加载web.xml中过滤器初始化参数

init_AliasStandardObjects() ; // [7] ----加载Bean对象

加载顺序

 default.properties

 struts-default.xml

 struts-plugin.xml

 struts.xml

 struts.properties

 web.xml

 注意:后配置的常量的值会覆盖先配置的常量的值。

Action的配置

  package相关配置

    package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。

      package标签的属性

                 name :包的名称,只有在一个项目中不重名即可。

                extends :继承哪个包,通常值为struts-default

                namespace :名称空间,与<action>标签中的name属性共同决定访问路径。

               名称空间有三种写法:

                      带名称的名称空间 namespace=”/aaa” 

                      跟名称空间 namespance=”/”

                     默认名称空间 namespace=””

                     abstract :抽象的,用于其他包的继承。

action相关配置:

action标签配置Action类。

action标签的属性

  1. name :与namespace共同决定访问路径
  2. class Action类的全路
  3. method :执行Action中的哪个方法的方法名,默认值execute
  4.  converter :用于设置类型转换器

常量的配置

  struts2的常量配置

  

Struts2的框架中,提供了非常多的常量:(在default.properties

  •  struts.i18n.encoding=UTF-8 ----Struts2中所有的post请求的中文乱码不用处理。
  • struts.action.extension=action,, ----Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。Struts2中修改一些常量的值:
  • 修改常量的值,可以有三个位置进行修正

struts.xml中进行修改

struts.properties中进行修改

 web.xml中进行修改

分模块开发设置

 include的配置

经测试可以正常的运行

首先在包的目录下建一个struts_demo1.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- Struts2为了管理Action的配置,通过包进行管理 -->
<!-- 配置Struts2的包============================== -->
<!-- package中的名字随意,但是在配置文件中不可以重复 -->
    <package name="demo1" extends="struts-default" namespace="/">
         <!-- 配置Action==action中的名字必须是刚刚页面中的xxx.action==class部分是对应的的类的路径地址 -->
         <action name="hello" class="com.zyz.struts.HelloAction">
              <!-- 配置跳转页面===当类中返回的是sucess那么就会设定跳转到相应的界面==== -->
              <result name="sucess">/demo1/sucess.jsp</result>
         </action>
    </package>
</struts>

然后在src目录下的struts.xml的文件中代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<include file="com/zyz/struts/struts_demo1.xml"></include>
</struts>

其他的不变。网页依然可以正常的进行访问

Action的访问问题

Action类是POJO的类

Action类实现一个Action的接口

Action类继承ActionSupport

 

Action的三中访问方式:

通过method设置

<body>
   <h1>Struts2的入门</h1>
   <h3><a href="hello.action">入门</a></h3>
   <h3><a href="find.action">查看信息</a></h3>
   <h3><a href="update.action">修改信息</a></h3>
   <h3><a href="delete.action">删除信息</a></h3>
   <h3><a href="add.action">添加信息</a></h3>
  </body>

配置文件 

<struts>
<!-- Struts2为了管理Action的配置,通过包进行管理 -->
<!-- 配置Struts2的包============================== -->
<!-- package中的名字随意,但是在配置文件中不可以重复 -->
    <package name="demo2" extends="struts-default" namespace="/">
         <!-- 配置Action==action中的名字必须是刚刚页面中的xxx.action==class部分是对应的的类的路径地址 -->
         <action name="find" class="com.learn.struts.demo1.Demo1" method="find"></action>
         <action name="update" class="com.learn.struts.demo1.Demo1" method="update"></action>
         <action name="delete" class="com.learn.struts.demo1.Demo1" method="delete"></action>
         <action name="add" class="com.learn.struts.demo1.Demo1" method="add"></action>
    </package>
</struts>

通过通配符的方式进行配置(*****)

更加抽象的通配设置

动态方法访问

 开启动态方法访问

 编写访问路径

 

 唯一区别就是他用的是感叹号!

一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
原文地址:https://www.cnblogs.com/byczyz/p/11437513.html