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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,