• 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>

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

    更加抽象的通配设置

    动态方法访问

     开启动态方法访问

     编写访问路径

     

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

    一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
  • 相关阅读:
    [Codeforces-div.1 809C] Find a car
    [Codeforces-div.1 55D] Beautiful numbers
    [BZOJ3598] [Scoi2014]方伯伯的商场之旅
    [BZOJ3131] [Sdoi2013]淘金
    [BZOJ2757] [SCOI2012]Blinker的仰慕者
    [BZOJ3329] Xorequ
    [POJ3744] Scout YYF I
    angular-file-upload 回显已上传的文件
    angular-file-upload 限制文件上传个数 获取已上传文件队列
    angular-file-upload 一款好用的文件上传组件,基本应用
  • 原文地址:https://www.cnblogs.com/byczyz/p/11437513.html
Copyright © 2020-2023  润新知