Struts2笔记(一)

1.创建Action

创建action需要继承ActionSupport类,然后就会有一些常量以及一些方法。 struts2的action默认执行的方法就是execute()方法

package demo01;

import com.opensymphony.xwork2.ActionSupport;

public class Hello extends ActionSupport{
    public String execute(){
        return SUCCESS;
    }
}

2.配置核心配置文件

<?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>
  <!-- name随便配  extends就只能是这个  namespace是将来要访问的路径的前缀 -->
    <package name="struts" extends="struts-default" namespace="/">
      <!-- name以后和namespace合并形成访问的url  class就是具体的action的类 -->
        <action name="hello" class="demo01.Hello">
          <!-- 看返回的值是什么然后转发到对应的页面 -->
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

1.package

就相当于java中的包,为了区分不同的action。

  • name和功能无关,name值不能重复
  • extends 他的值是固定的,是继承了struts,只有这样类才有action的特性
  • namespace 和name构成访问路径 不写默认就是斜杠2.action
  • name就是访问路径
  • class action的class路径
  • method 这个就是要执行的方法3.result
  • name 回去返回值
  • type 就是跳转还是转发4.配置常量
<constant name="" value=""/>
<!-- 例如 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>

3.配置web.xml过滤器

我们的web服务器并不知道我们访问的是一个action而不是一个Servlet,所以我们要使用一个Struts2的过滤器来处率action的请求。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <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>

4.struts2基本原理

1.过滤器加载配置文件

在web服务器启动的时候,过滤器就会创建,然后在init方法就会加载struts2的核心配置文件,以及它自带的jar包中的配置文件

2.访问action执行方法

在访问的时候都被过滤器拦截到,然后转发到对应的类,让这些类的对应方法执行

5.配置文件的拆分

可以拆分配置文件,但是子配置文件还是需要dtd,struts标签,然后主配置文件也是如此。然后在主配置文件中的struts标签中写include标签。

主配置文件:

<?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>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <include file="struts.xml"/>
</struts>

子配置文件:

<?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>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <package name="struts" extends="struts-default" namespace="/">
        <action name="hello" class="demo01.Hello">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏along的开发之旅

Java Web之Tomcat目录结构和Web应用

如果Servlet版本小于3.0, 或者您不希望使用注解, 那么可以在web.xml中配置您的servlet程序, 一个最简单的实例如下:

15120
来自专栏行者常至

状态管理-Cookie

9930
来自专栏Ken的杂谈

ServiceStack.Host.MVC vs ASP.NET MVC

13620
来自专栏魏艾斯博客www.vpsss.net

php 环境上传文件超过容量被限制怎么办

经常有网友在 php 环境中上传大容量文件,会遇到系统提示文件大小超过容量被限制上传,如果是老鸟自然会知道如何解决,对于新手来说这就好像学习 php 建站过程中...

13140
来自专栏DeveWork

WordPress自定义栏目运用实例V:为加密文章添加密码提示文字

默认的话,WordPress中加密的文章时不会有任何的提示的,就一个“加密:”在文章名前面。通常的话,解决这个问题的话我都是直接将密码写在题目中的(比如说这儿,...

22280
来自专栏北京马哥教育

25个shell脚本代码分享,日常工作够用了

引言 自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的。 程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以...

473110
来自专栏Linux驱动

33.Linux-实现U盘自动挂载(详解)

1.当我们每次插入u盘后,都会自动创键U盘的设备节点/dev/sda%d 这是因为里面调用了device_create()实现的, busybox的mdev机制...

48570
来自专栏ShaoYL

iOS---内存分析

36480
来自专栏FreeBuf

Cookiel劫持测试工具 – Cookie Injecting Tools

Cookie Injecting Tools 是一款简单的开源cookie利用工具,是Chrome浏览器上开发的一个扩展插件,能够灵活地进行SQL注入测试,编辑...

28870
来自专栏tiane12

Linux执行脚本出现Error: bin/bash^M: bad interpreter: no such file or directory问题解决方法

18030

扫码关注云+社区

领取腾讯云代金券