初学者入门:Structs中基本配置入门

初学

1、为Structs应用配置Web.xml文件

第一步:配置ActionServlet

<servlet>  <servlet-name>action</servlet-name>  <servlet-class>org.appache.  structs.ActionServlet</servlet-class></servlet><servlet-mapping>   <servlet-name>action</servlet-name>   <uri-pattern>*.do</url-pattern></servlet-mapping>

注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个ActionServlet。

第二步:初始化参数对Servlet的运行环境进行初始化配置。

<servlet>   <servlet-name> action</servlet-name>   <servlet-class> org.appache.   structs.ActionServlet </servlet-class>   <init-param><param-name>config</param-name><param-value>/WEB-INF/structs-config.xml</param-value></init-param> </servlet>

表2-1. Struts1.1中用到的初始化参数

参数名 含义/默认值
config 以相对路径的方式指明 Struts应用程序 的配置文件位置。 如不设置,则默认值为/WEB-INF /struts-config.xml。
config/sub1 以相对路径的方式指明子应用程序 的配置文件位置,一般来说, 很少用到子应用程序, 在此不多描述。
debug 设置Servlet的debug级别, 控制日志记录的详细程度。 默认为0, 记录相对最少的日志信息。
detail 设置Digester的debug级别, Digester是Struts框架所使用的 用来解析xml配置文件的一个框架, 通过该设置,可以查看不同详细 等级的解析日志。默认为0, 记录相对最少的日志信息。

第三步:配置欢迎清单

当客户访问Web应用时,如果仅仅给出Web应用的Root URL,没用指定具体的文件名,Web容器会自动调用Web应用的欢迎文件。

<welcome-file-list><welcome-file>welcome.jsp</welcome-file><welcome-file>index.jsp</welcome-file>  </welcome-fiel-list>

说明:

可以包含多个子元素,首先查找第一个文件。

由于元素中不能配置Servlet映射,因此不能直接把Structs的Action作为欢迎文件,可以采用一种变通的方法来实现在欢迎文件中调用Structs Action。

首先,在Structs配置文件中为被调用的Action创建一个全局的转发项,例如:

<global-forwards>        <forward name=”welcome”   path=”HelloWord.do”/></global-forwords>

创建一个welcome.jsp的文件,最后在web.xml文件中把welcome.jsp文件配置为欢迎文件,代码如下:

<welcome-file-list><welcome-file>welcome.jsp</welcome-file>     </welcome-file-list>

第四步:配置错误处理

<error-page>    <error-code>404</error-code>    <location>/commom/404.jsp</location></error-page><error-page>    <error-code>505</error-code>    <location>/commom/505.jsp</location></error-page>

也可以为Web容器捕获的Java异常配置,需要设置子元素,它用于指定Java异常类。Web容器可能捕获如下异常:RuntimeException或Error ServletException或它的子类,IOException或它的子类:

<error-page>    <exception-type>java.io.IOException </exception-type>    <location>/common/system_ioerror.jsp </location></error-page>

第五步:配置Structs标签库

使用客户化的标签库,要配置它们:

<taglib>       <tag-uri>/WEB-INF/structs-html.tld    <tag-uri>       <taglib-location>    /WEB-INF/structs-html.tld    </taglib-location>   </taglib>

用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。

指定标签描述文件在文件资源系统中的物理位置。

2、Structs配置文件

Structs框架在启动时会读入其配置文件,根据它来创建和配置各种Structs组件。

(1)元素

元素是Structs配置文件的根元素,元素有8个子元素。它的DTD定义如下:

<!ELEMENT structs-config(data-sources?,formbean?,global-exeception?,global-forward?,action-mapping,controller?,message-resources*,plug-in*)>

在Struts配置中,必须按照以上的DTD指定的先后顺序来配置元素的各个子元素,如果颠倒了这些元素的配置文件中的位置,在Structs应用启动时会生成错误。

元素

元素包含零个、一个或者多个子元素,用于配置特定的数据源,它可以包含多个子元素,用于设置数据源的各种属性。

配置了数据源后,就可以在Action类中访问数据源,在org.apache.structs.action.Action类中定义了getDataSource(HttpRequrst)方法,它用于获取数据源对象的引用。

DataSource  dataSource;   Connection  connection;       dataSource =getDataSource(request);       connection=dataSource.getConnection();

也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过改值来标识特定的数据源。

(2)元素

元素用来配置多个ActionForm Bean,包含多个子元素,,每个包含多个属性,ClassName , name,type:

<form-beans>        <form-bean name="HelloForm"   type="hello.HelloForm"/></form-beans>

注意:配置动态ActionForm Bean,还必须配置元素的元素。

<form-beans>        <form-bean name="HelloForm"   type="hello.HelloForm"/>        <form-bean name="userForm" type="org.apache.structs.action.DynaAction">        <from-property name="firstname"  type="java.lang.String"/>        <form-property name="secondname"  type="java.lang.String">        <form-property name="age"  type="java.Integer" initial="18">    </form-beans>

(3)元素

用于配置异常处理,元素可以包含零个或者多个元素。

元素用来设置java异常和异常处理类org.apache.structs.action,Exception Hander之间的映射。

(4)元素

元素用来声明全局的转发关系,有零个或多个元素组成。元素用于把一个逻辑映射到特定的URL

属性 描 述
className 和元素对应的配置类, 默认为org.apache.structs. action.ActionForWard
name 转发路径的逻辑名, 此项时必须的
path 指定或者重定向的URI。 此项时必须的, 必须以”/”开头
redirect 此项是true,表示是执行重定向的操作, 此项是false时, 表示请求转发。

 

<global-forwards>       <forward name="forward1"    path="/Action1.do"/><forward name="forward1" path="/Action2.do"/> </global-forwards>

如果jsp1.jsp把请求转发给Action1,可以使用以下代码:

<html:link forward=”forward1”>

或者

<logic:forward name=”forward1”>

如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码:

return(mapping.findForward(“forward2”))

(5)元素

元素包含零个或者多个元素。元素描述了从特定的请求路径到相应的Action类的映射。

(6)元素

元素用于配置ActionServlet。

(7)< message-resources>元素

元素用于配置Resource Bundle,Resource Budle用于存放本地化消息文件。

Structs标签

HTML标签

标签名 描述

base 包装HTML的base元素

button 包装HTML的 button类型的input元素

cancel 包装HTML cancel 按钮

checkbox 包装HTML checkbox 类型的输入域

errors 有条件地显示一些error消息,显示ActionErrors信息

file 包装HTML文件上传输入域

form 定义HTML form 元素

frame 包装HTML frame 元素

hidden 包装HTML hidden 输入域

html 包装 HTML中的 html 元素

image 包装 "image"类型的输入域

img 包装HTML的 img 元素

javascript 包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本

link 包装超链接

messages 有条件地显示一些提示信息,显示ActionMessages信息

multibox 包装多选输入框

option 包装一个选择输入框

options 包装一批选择输入框

optionsCollection 包装一批选择输入框集

password 包装密文输入框

radio 包装单选输入框

reset 包装“重置”功能的按钮

rewrite 包装一个URL

select 包装一个选择输入框

submit 包装一个提交按钮

text 包装一个文本输入框

textarea 包装一个备注输入框

ActionForm

ActionForm 的要求

创建一个ActionForm 并不困难,但是你的类必须符合一些要求:

ActionForm 必须扩展自org.apache.struts.ActionForm。基类ActionForm 是不能实

例化的。

ActionForm 必须为每个应该从请求中收集的HTML控件定义一个公共属性。

(Struts 1.0 要求每个属性都要mutator 和accessor 。Struts 1.1 则没有如此严格)

ActionForm还可能要符合一些可选的要求:

如果你要求ActionForm 在传递属性到Action之前校验它们,你就必须实现validate

方法,如果想在组装前初始化属性,必须实现reset , 它在ActionForm 组装前被调用。

动态ActionForm

ActionForm 作为类型转换器

ActionForm的一个强制点是应该使用String 和boolean属性。实际上,这意味着属性

必须得从一种转换到另一种类型。大部分应用也需要一些属性,比如电话号码或者数量,以一种格式化的方式出现。

核心Java 包提供一些工具来做这种事情,但是要清楚地将他们集成到应用中仍然是一个挑战。

Struts开发人员经常在ActionForm中包含helper方法,来进行类型转换。helper 方法

可以有很多种实现方式。

5.2.6 ActionForm 作为防火墙

当请求提交时,ActionServlet 使用一个自动组装机制来从请求参数中设置请求的

ActionForm属性。这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参数

是可接受的。这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以接受的能力。ActionForm一定不能包含看起来像是一个JavaBean属性,但不能从HTTP请求设置的属性方法。

5.3.4 ActionForm 可以嵌套其它bean

因为Struts标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它bean。这是一个方便的方式,可以通过ActionForm来组装存在的bean。在JSP页面,你可以象这样引用一个嵌套的bean:

<html:textpropety="values.telephoneText"size="14"maxlength="14"/>

5.7.2 分发(Dispatch )

Struts 开发人员通常使用同一个Action处理相关的操作。一个通常做法来选择操作是在

HTML表单中使用隐藏属性。BaseForm 的dispatch 属性也可用作这个目的:

public void setDispatch(String dispatch);public String getDispatch();

Struts 配置提供连个级别嵌套的ActionForward:

Global (全局) ActionForward对整个应用中的所有Action 对象均有效;

Local (局部) ActionForward 则在ActionMapping 元素中定义。

仅对那些在这个ActionMapping中调用的Action对象有效。从Action 对象内部来看,forward 通常像这样来选择:

ActionForward forward = mapping.findForward("continue");

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, actionmessage
, 强制解析html标签
, 配置
, 元素
, struct框架
, actionform
, java转发xml
, java转发数据
, JSP请求转发
, 一个
, multibox
, Structs
包装
,以便于您获取更多的相关知识。

时间: 2025-01-31 05:41:11

初学者入门:Structs中基本配置入门的相关文章

Structs中基本配置入门

  1.为Structs应用配置Web.xml文件 第一步:配置ActionServlet   <servlet> <servlet-name>action</servlet-name> <servlet-class>org.appache. structs.ActionSer vlet</servlet-class></servlet><servlet-mapping> <servlet-name>actio

android-Android开发入门学习中遇到的问题

问题描述 Android开发入门学习中遇到的问题 Android初学者,使用的书籍是<第一行代码Android>在书中2.2.5在活动中使用Toast这个部分出现了问题代码编写并未报错,虚拟机中按menu键没有出现菜单栏,请问这是什么原因该如何解决.拜托各位了. 问题没有解决,在虚拟机中点击Menu依旧没有出现菜单栏,请问还有哪些问题?拜托了 解决方案 在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及

android开发+-Android开发入门学习中遇到的问题

问题描述 Android开发入门学习中遇到的问题 Android初学者,使用的书籍是<第一行代码Android>在书中2.2.2创建和加载布局中在布局文件中编辑添加了按钮之后,为什么要在活动中加载这个布局,原理是什么? 解决方案 布局文件相当于画面,activity相当于画布,在activity中加载布局文件才会显示出布局文件中的布局 解决方案二: 布局就是传给Activity,在安卓手机界面中显示出来

selenium2 学习资料?入门资料,环境配置。。。。

问题描述 selenium2 学习资料?入门资料,环境配置.... selenium2 学习资料?入门资料,环境配置....web测试中如何正确使用?web测试哪种框架最好? 解决方案 谢谢,不是我需要的 解决方案二: cocos2dx入门资料及学习资源cocos2dx入门资料及学习资源OGRE学习资料(一):环境配置

容器、Docker与Kubernetes——Kubernetes的配置入门

本文讲的是容器.Docker与Kubernetes--Kubernetes的配置入门[编者的话]这是介绍Kubernetes的第三篇,主要集中讲述如何配置Kubernetes集群以及作者在配置过程中遇到的问题. [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为主题,包括:Docker Plugin.Docker storage driver.Docker Volume Pulgin.Kubernetes Storage机制.容器网络实现原理和模型.Docker网络实现.网

Docker Swarm入门(二)配置选项与基本运行环境要求

本文讲的是Docker Swarm入门(二)配置选项与基本运行环境要求,[编者的话]本文作者Matt Bajor热衷Docker及相关产品的研究,本文是他写的Docker Swarm入门系列的第二篇,主要介绍了Docker Swarm的最基本的配置选项和运行要求.作者通过实际例子介绍了Swarm的几个基本的发现服务及其对于容器的调度策略,最后还介绍了如何在Swarm集群通信中使用安全传输协议. Docker Swarm集群运行环境的最低要求 创建基本的Docker Swarm集群对运行环境的要求

设计实例教程:标识设计中辅助参考线入门

文章描述:教你画高端的圈圈!标识设计中辅助参考线入门. 很多小伙伴们为了提升设计作品的逼格,在设计展示图上打上各种圈圈,让简单的图形,看起来高端上档次.有的时候,屌丝与高富帅,仅一"圈"之遥. 还有一种普遍的现象,一个标准简洁的logo诞生之初,总会被外行人鄙视嘲笑吐槽,当设计师发布了线框图(手稿之后),又会被一边倒的人评价认真,专业.锤子的logo发布之初亦是如此. 为何辅助线能提升作品档次? 其实这些线线圈圈都是设计的手工作业时代玩剩下的东西,计算机设计时代,无需用笔.圆规.尺,工

PHP中使用curl入门教程

  这篇文章主要介绍了PHP中使用curl入门教程,本文讲解了curl概述.安装curl.PHP中使用curl的步骤.一个简单的curl代码实例等内容,需要的朋友可以参考下 概述 在我的上一篇文章"curl和libcurl简介"中简单的给大家介绍了curl相关的知识.这篇文章向大家介绍一下PHP中的curl扩展. 尽管在上一篇文章中,对curl和libcurl做了区分,也解释了某些相关的概念.同时,也知道了PHP中的curl扩展其实是对libcurl的封装.但是,在这篇文章中,为了写起

按钮-自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙!

问题描述 自己参照书本写了一个Java Swing中的容器类入门程序设计,但是运行结果不对,求大神帮帮忙! /*题目是这样的:创建一个窗体在其中摆放两个内容面板对两个面板进行边框个性化设置.初始状态为第二个面板不可见,当单击第一个面板中的"打开"按钮时,第二个面板即可见:当单击第一个面板中的"关闭"按钮时,第二个面板消失. 以下是我结合书本写的代码,不知道为什么运行不了???*/import javax.swing.*;import java.awt.*;impor