Struts2框架自学之路——轻松入门

2023-05-16

目录

  • 目录
  • 简介
  • Struts2中的Action
    • Action类的配置
    • webxml中Struts2的过滤器
  • Struts2的核心配置文件
    • 标签package
      • 标签package的属性
    • 标签action
      • 标签action的属性
    • 标签result
      • 标签result的属性
    • 分模块开发
  • Struts2常量配置
    • 修改Struts2默认常量值
    • 常用常量
  • Action的编写方式
  • 修改访问Action时执行的方法

简介

  1. Struts2框架应用于JavaEE三层结构中Web层的框架;
  2. Struts2框架在Structs1和WebWork基础之上发展的全新的框架;
  3. Web层常见框架:(1)struts2;(2)Spring MVC。

Struts2中的Action

Action类的配置

  配置action类访问路径的步骤如下:
(1)创建struts2核心配置文件
- 核心配置文件的名称和位置是固定的,位置必须在src下面,名称为struts.xml
(2)为struts.xml引入dtd约束

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

(3)在struts.xml中进行action配置

<struts>
    <package name="hellodemo" extends="struts-default" namespace="/">
        <!--name: 访问名称-->
        <action name="hello" class="com.wm103.action.HelloAction">
            <!--配置方法返回值跳转到的页面-->
            <result name="ok">/hello.jsp</result>
        </action>
    </package>
</struts>

(4)在web.xml中配置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>

(5)访问地址:http://localhost:8080/Web应用的名称/hello.action 或者 http://localhost:8080/Web应用的名称/hello

web.xml中Struts2的过滤器

   在web.xml中配置的Struts2过滤器在服务器启动时候创建,创建过滤器时执行init方法。在init方法中主要加载配置文件,包含自己创建的配置文件和Struts2自带的配置文件。
注:过滤器在我们启动服务器时创建,而Servlet默认在第一次访问时创建。

Struts2的核心配置文件

  Struts2的核心配置文件固定放置在Web应用src目录下,名称为struts.xml。在配置文件中主要有3个标签以及其属性,分别为 package、action、result标签。

标签package

  类似于代码中的包,用于区分不同的action。要配置action,必须首先写package标签,在package标签内才能配置action标签。

标签package的属性

(1)name属性
  name属性值跟功能本身并没有什么关系。同时,在一个配置文件中,我们可以写多个package标签,但是package标签的属性name值不能相同。
(2)extends属性
  extends属性的属性值是固定的,如:extends=”struts-default”。
配置了extends属性后,在package里面配置的类就具有了action的功能。
(3)namespace属性
  namespace属性的默认值为“/”。namespace属性值同action标签中的name属性值构成访问路径。如:

<package name="hellodemo" extends="struts-default" namespace="/web">
    <!--name: 访问名称-->
    <action name="hello" class="com.wm103.action.HelloAction">
        <!--配置方法返回值跳转到的页面-->
        <result name="ok">/hello.jsp</result>
    </action>
</package>

  则访问:http://localhost:8080/Web应用名称/web/hello

标签action

  action标签配置action的访问路径。

标签action的属性

(1)name属性
  namespace属性的默认值为“/”。namespace属性值同action标签中的name属性值构成访问路径。
  在package标签里面可以写多个action标签,但是action的name属性值不能相同。
(2)class属性
  配置action的全路径。
(3)method属性
  在action里面默认执行execute方法,可以通过method属性配置其他方法执行。

标签result

  根据action的方法(默认为execute方法)的返回值,配置到不同的路径里面。

标签result的属性

(1)name属性
  和方法返回值一样,如:

<!--配置方法返回值跳转到的页面-->
<result name="ok">/hello.jsp</result>

(2)type属性
  配置如何到路径中去(转发或重定向),type属性默认值是转发的操作。详情请看:result标签的type属性。

分模块开发

  单独写配置文件,并把配置文件引入到核心配置文件struts.xml,如:

<!-- 引入hello.xml文件 -->
<include file="com/wm103/action/hello.xml"></include>

  如果直接在src目录下,则

<include file="hello.xml"></include>

Struts2常量配置

  Struts2默认的常量存放位置在项目struts2 jar包中的org.apache.struts2下的default.properties中。

修改Struts2默认常量值

(1)常用的方式
- 在struts.xml中进行配置,如:

<constant name="struts.i18n.encoding" value="UTF-8"></constant>

(2)在src下面创建struts.properties,进行修改。
(3)在web.xml中通过<init-param>元素配置常量。

常用常量

struts.i18n.encoding=UTF-8
(1)表单提交数据到action中,在action中可以获取表单提交的数据。
(2)表单提交的数据中有中文,乱码问题的解决:
- post提交,直接设置编码;
- get提交,做编码转换。
参考:http://blog.csdn.net/qq_15096707/article/details/70953444#request接收中文数据乱码问题
(3)如果在action获取表单通过post方式提交的中文数据,那么中文乱码问题就已经被解决,不需要我们自己处理。

Action的编写方式

  Action的编写有3中方式:
1. 创建简单类,不实现任何接口,也不继承任何类;

public class HelloAction {
    public String execute() {
        return "ok";
    }
}

 
2. 创建一个实现Action接口的类;

import com.opensymphony.xwork2.Action;

/**
 * Created by DreamBoy on 2017/5/16.
 * 实现接口
 */
public class UserAction implements Action {
    @Override
    public String execute() throws Exception {
        //return "success";
        return SUCCESS;
    }
}

 
3. 创建一个继承ActionSupport类的类。(最常用的方式)

import com.opensymphony.xwork2.ActionSupport;

/**
 * Created by DreamBoy on 2017/5/16.
 * 继承类
 */
public class PersonAction extends ActionSupport {
    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
}

修改访问Action时执行的方法

  有3种实现的方式:
1. 修改struts.xml配置文件中action标签的method属性,该属性的值设置为访问Action时执行的方法名。
2. 使用通配符实现(重点)
  设置action标签name属性的值包含符号“*”。* 表示匹配任意内容。如:
struts.xml中配置:

<package name="demo" extends="struts-default" namespace="/">
    <action name="book_*" class="com.wm103.action.BookActon" method="{1}"></action>
</package>

  这样配置后,表示访问URL路径 /book_add 时,将会调用BookAction中的add方法执行;访问URL路径 /book_update 时,则会调用BookAction中update方法执行,以此类推。因为 * 号表示匹配任意字符。其中 {1} 则表示第一个匹配到*号的内容,如 book_add 则匹配 book_*,那么{1}的值为add。
注:book_ 并不匹配 book_*
3. 动态访问实现(一般不使用)


注:1. 访问Action时执行的方法(默认为execute方法),有返回值,那么返回值类型必须为String类型。2. 该方法也可以没有返回值,在没有返回值的时候,在struts.xml中result标签不需要配置。并将方法的返回值设置为void或者让返回值,返回“none”字符串(一般我们返回“none”)。

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {
    public String execute() {
        return NONE;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2框架自学之路——轻松入门 的相关文章

随机推荐

  • Node中的Connect——常用中间件

    接下来介绍一个Connect内置的一些中间件 xff1a static中间件 1 挂载 static允许将任意一个URL匹配到文件系统中任意一个目录 如 xff1a 将 my images URL和名为 images的目录对应起来 xff0
  • Flask-apscheduler 无法启动工作,报错Run time of job was missed by... 解决方法

    先说结论 xff1a flask apscheduler 中如果要调用 app context环境的话 xff0c 用 scheduler app app context 详细过程 xff1a 1 环境与背景 xff0c 使用Flask 还
  • Node.js中同步函数异步编程

    转载自 xff1a nodejs 代码设计模式1 xff1a 同步函数变异步 同步函数变异步 1 问题 xff1a 1 1 碰到需要调用你刚正在创建的对像 span class hljs function span class hljs k
  • 深入理解Express.js

    转载自 xff1a 深入理解Express js 本文针对那些对Node js有一定了解的读者 假设你已经知道如何运行Node代码 xff0c 使用npm安装依赖模块 但我保证 xff0c 你并不需要是这方面的专家 本文针对的是Expres
  • Angular2文档学习的知识点摘要——依赖注入

    目录 目录依赖注入 xff08 DI xff09 为什么需要依赖注入 xff1f Angular 依赖注入 配置注入器在 NgModule 中注册提供商在组件中注册提供商该用NgModule还是应用组件 xff1f 注入服务显性注入器的创建
  • mysql 单表多次查询和多表联合查询,哪个效率高

    引自高性能MySQL xff1a
  • JDK5中的重要特性

    目录 目录静态导入自动装箱拆箱增强for循环可变参数枚举类反射 加载类解剖类利用Constructor创建对象利用Method执行方法反射字段 内省IntrospectorBeanUtils框架泛型Generic 泛型的使用自定义泛型 自定
  • Tomcat虚拟目录与虚拟主机的配置

    目录 目录互联网上常用协议以及其工作端口虚拟目录的映射方式 Tomcat配置虚拟目录不重启Tomcat配置虚拟目录的方式让tomcat自动映射 配置虚拟主机使用Java编写最简单的服务器程序 互联网上常用协议以及其工作端口 协议端口http
  • Tomcat相关知识点及其应用

    目录 目录将Web应用打包成warTomcat体系架构Tomcat配置https连接器Tomcat服务器的管理平台 将Web应用打包成war 在Web应用目录下执行命令 xff1a jar cvf xxx span class hljs p
  • Servlet开发须知知识点

    目录 目录Web项目目录结构Servlet的调用过程Servlet的运行过程Servlet接口实现类Servlet的URL映射Servlet线程安全 Web项目目录结构 举例 xff0c 在Intellij IDEA中如下 xff1a 其中
  • Servlet中的response对象

    目录 目录前言简介向客户端输出数据 response对象的getOutputStream方法response对象的getWriter方法 实现文件下载生成图片验证码实现浏览器定时刷新控制浏览器缓存实现请求重定向 前言 这里讲述的是Servl
  • Servlet中的request对象

    目录 目录简介request的常用方法request接收中文数据乱码问题request对象实现请求转发使用请求转发的注意事项RequestDispatcher的页面包含方法includeWeb工程中各类URL地址的写法防盗链 简介 Http
  • wps和搜狗输入法archlinux的解决方案文章

    archlinuxcn 源里安装yay wps3部分组成 yay S wps office cn 主程序英文界面 yay S wps office mui zh cn 中文皮肤 xff0c 变成中文界面 yay S ttf wps font
  • Servlet中不可不知的Cookie技术

    目录 目录介绍Servlet中的CookieCookie重要知识点通过Cookie技术显示用户上次访问时间使用Cookie技术实现记录用户浏览过的商品 显示商品列表和浏览过的商品查看商品详情 xff08 使用Cookie记录浏览信息 xff
  • Servlet中不可不知的Session技术

    目录 目录介绍Session和Cookie的主要区别Session的创建Session的销毁Session的实现原理解决浏览器关闭后就立即丢失Session ID的问题浏览器禁用Cookie后如何使用Session技术 xff1f Sess
  • JSP知识随手记

    目录 目录介绍JSP运行原理JSP最佳实践JSP指令 page指令include指令taglib指令 JSP九大内置对象 out隐式对象pageContext隐式对象 JSP标签映射JSP知识点JSP与JavaBean 关于JavaBean
  • FileZilla连接Linux服务器(Ubuntu)

    目录 目录前言FileZilla使用ubuntu用户密钥的形式连接FileZilla使用root用户密码的形式连接参考 前言 这里使用的是Ubuntu服务器 xff0c 如果是Linux系统的服务器出现这样的问题 xff0c 可能解决方法也
  • JSP中的自定义标签

    目录 目录简介入门案例自定义标签功能扩展传统自定义标签的运行原理传统自定义标签的使用 控制JSP页面部分内容执行控制整个JSP页面是否执行控制标签体执行重复执行用标签修改JSP页面内容 简单标签的运行原理简单标签的使用 控制JSP页面部分内
  • JSP中使用简单标签自定义标签

    目录 目录简介使用标签控制页面逻辑的案例 开发防盗链标签开发cif标签开发cifcelse标签开发cforEach标签使用简单标签实现html转移标签 打包标签库 简介 让标签处理器类继承于SimpleTagSupport类实现自定义标签功
  • Struts2框架自学之路——轻松入门

    目录 目录简介Struts2中的Action Action类的配置webxml中Struts2的过滤器 Struts2的核心配置文件 标签package 标签package的属性 标签action 标签action的属性 标签result