Struts组件总结

2024-08-25 15:58
文章标签 总结 组件 struts

本文主要是介绍Struts组件总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言      

        上一篇博客,我们讲解了struts开发程序的步骤,这次我们来详细聊聊每个struts组件的功能吧~~

         首先,我们先回顾一下,struts的组件都有什么:

         ActionServlet

         Acation Classes

         Action Mapping

        ActionForward

        ActionForm Bean

 

1、  ActionServlet(中心控制器)

        1) 定义: 继承自javax.servelt.http.HttpServlet类,是中心控制器(总控制器)。它提供了一个中心位置来处理全部的终端请求

         2)      作用:接受请求,填充数据,派发请求,响应用户

         3)      配置:在web配置文件(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"><display-name></display-name>	<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>2</param-value></init-param><init-param><param-name>detail</param-name><param-value>2</param-value></init-param><!-- 大于等于0 的时候表示一启动就new好了servlet 。初始化的时候newstruts-config.xml文件-,将struts的action标签内容放到了actionmapping里--><load-on-startup>2</load-on-startup></servlet><!-- Standard Action Servlet Mapping --><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>


2、  Action(一个请求与业务逻辑的适配器)

       1)初始化时间:第一次请求的时候初始化(不是在读取配置的时候初始化)

       2)初始化次数:每个Action只被初始化一次(多个请求共享一个Action)

       3)安全问题:Action是线程不安全的,因为所有的请求共享一个Action实例

       4)配置:在struts-config.xml文件中:

 

<action path="/login"type="com.bjpowernode.struts.LoginAction"name="loginForm"scope="request"
><forward name="success" path="/login_success.jsp"/><forward name="error" path="/login_error.jsp"/></action>


3、  ActionMapping

       1) 一个实例对应了struts-config.xml文件中的一个<action>标签

       2) 当我们建立一个Action类单纯为了页面转向时,可以通过在<forward>属性里转向,就可以省去一个Action类

        3) unknown属性:当请求的一个*.do不存在的时候,就会找<action>中的unknown属性为true的,如果有就转向到这个页面上。是一种容错处理。

       4) input属性:与异常有关,当出现问题,会跑到这个属性所指的页面上

       5) 数据保持:使用el表达式或者是struts标签

<action-mappings><action path="/login"type="com.bjpowernode.struts.LoginAction"name="loginForm"scope="request"><forward name="success" path="/login_success.jsp"/><forward name="error" path="/login_error.jsp"/></action>
</action-mappings>

4、  ActionForward

        ActionForward对象是配置对象,封装了向前进的Url路径且被请求处理期用于识别的目标视图。就是一个导航器。

        name:逻辑名称

        path:页面或者模块的访问路径

       redirect:控制转发还是重定向。默认值是false,就是转发(RequestDispatch.forward),当为true的时候表示是重定向(HttpServletResponse.sendRedirects)

<forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>

5、  ActionForm Bean

        处理anctionForm的一般步骤:

       1)检查Action的映射,确定Action中已经配置了对ActionForm的映射

       2)根据name属性,查找formbean的配置信息

       3)检查Action的formbean的使用范围确定在此范围下(request,session),是否已经有此formbean的实例<actionscope=”request”>,默认是session

       4)假如当前范围下,已经存在了此form bean的实例,而且对于当请求来说,是同一种类型的话,那么就重用

       5)否则,就重新构建一个formbean的实例(调用构造方法),并且保存在一定的作用范围

       6)formbean的reset()方法被调用

       7)调用对应的setter方法,对状态属性赋值

       8)如果validate的属性设置为true,那么就调用formbean的validate()方法

       9)如果validate()方法没有返回任何的错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行

注意:直接从ActionForm类继承的reset()和validate()方法,并不能实现什么处理功能,所以有必要自己重新覆盖

<form-beans><form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>
</form-beans>

总结

对于框架,我们首先要先有一个宏观的了解,之后再一步步的深入!fighting~~~~

 

这篇关于Struts组件总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105996

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三