struts1教程

合集下载

struts1学习笔记

struts1学习笔记

struts1开发学习笔记使用一个简单的例子记录struts1开发过程。

0、 描述主要功能描述:index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。

newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。

ProductAction.java 是处理逻辑的action简单描述流程图:1、 构建环境在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add srutscapapibality ,弹出界面,选择struts1.2支持。

如下图所示:添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。

2、 代码编写2)创建工具类Util.java,从数据库连接池中获得连接。

需要两个步骤第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,第二步:在util类中读取配置获得连接,util.java如下:3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml配置中内容。

EncodingFilter.java的内容如下:4)修改web.xml,指定首页为index.jsp。

文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。

6)index.jsp中提到productAction.action?method=viewAddForm,需要在在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm10)searchProduct.jsp是查询结果界面,代码如下:http://localhost:8080/StrutsTest即可访问。

struts2自学完全文档

struts2自学完全文档

一.Struts2基础知识1. struts2的特点及配置1.1struts2与struts1的比较1)在软件设计上struts2没有struts1那样跟ServletApi和StrutsApi有着紧密的耦合,Struts2的应用可以不因爱ServletApi和StrutsApi.struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计public class OrderListAction ectends Action//struts依赖于java2)Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能3)Struts2提供了类型转换器,我们可以把特殊的请求参数转换成我们需要的类型,在struts1中,如果我们实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器4)Struts2提供了支持多种表现层技术,如JSp,freeMarker等5)Struts2的输入校验可以对指定方法进行校验,解决了Struts的长久之疼6)提供了全局范围,包范围和Action范围的国际化资源文件管理实现1.2搭建struts2的开发环境1)新建web项目2)导入必要的包3)写配置文件Struts2默认的配置文件为Struts.xml,该文件需要存放在WEB-INF/classes下,该文件的配置模板如下(在m yeclipse中放在src目录下就可以了)模板在D:\Program Files\struts-2.3.4.1-all\struts-2.3.4.1\apps 解压struts2-blank.var再打开web-info/classes中的struts.x m l文件即可<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.3//EN""/dtds/struts-2.3.dtd"><struts></struts>4)在web.xm l中加入Struts2MVC框架启动配置在struts1.x中struts框架是通过Servlet启动的,在struts2中,struts框架式通过Filter 启动的,他在web.xm l中的配置如下:(D:\Program Files\struts-2.3.4.1-all\struts-2.3.4.1\apps 解压struts2-blank.var再打开Web-Info\web.xm l即可)<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.Str utsPrepareAndExecuteFilter</filter-class><!—自从struts2.1.3以后,下面的FilterDispatcher已经标注为过时<filter-class>org.apache.struts2.dispatcher.ng.filter.FilterDispather</filter-class> --></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>在StrutsPrepareAndEXecuteFilter()方法中将会读取类路径下的默认文件struts.xml完成初始化操作。

XPATH参考手册

XPATH参考手册

XPath 教程Next Page XPath 是一门在 XML 文档中查找信息的语言。

XPath 可用来在 XML 文档中对元素和属性进行遍 历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达 之上。

因此,对 XPath 的理解是很多高级 XML 应用的基础。

开始学习 XPath !XPath 参考手册在 W3School,我们提供完整的 XPath 2.0、XQuery 1.0 和 XSLT 2.0 的内置函数参考手册。

XPath 函数内容目录XPath 简介 本章讲解 XPath 的概念。

XPath 节点 本章详细介绍 XPath 中不同类型的节点,以及节点之间的关系。

XPath 语法 本章讲解 XPath 的语法。

XPath 轴 本章讲解 XPath axes(轴)。

XPath 运算符 本章列出了可以用于 XPath 表达式的运算符。

XPath 实例 本章使用 "books.xml" 文档来演示一些 XPath 实例。

XPath 摘要 本文内容包括在本教程所学知识的一个总结,以及我们向你推荐的下一步应该学习的内容。

XPath 参考手册XPath 函数XPath 2.0、XQuery 1.0 和 XSLT 2.0 的内置函数。

XPath 简介 Previous Page Next Page XPath 是一门在 XML 文档中查找信息的语言。

XPath 用于在 XML 文档中通过元素和属性进行导 航。

在学习之前应该具备的知识:在您继续学习之前,应该对下面的知识有基本的了解: HTML / XHTML  XML / XML 命名空间如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。

什么是 XPath? XPath 使用路径表达式在 XML 文档中进行导航  XPath 包含一个标准函数库  XPath 是 XSLT 中的主要元素  XPath 是一个 W3C 标准XPath 路径表达式XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。

withidentity方法

withidentity方法

withidentity方法“withIdentity方法”,以中括号内的内容为主题,写一篇1500-2000字文章,一步一步回答引言:在软件开发中,身份验证是非常重要的一个方面。

当用户需要访问系统的特定资源时,系统需要验证其身份,以确保只有授权用户才能进行访问。

withIdentity方法是一种用于创建和管理用户身份的功能,它为开发人员提供了一种简单而强大的方法来进行身份验证。

第一部分:什么是withIdentity方法withIdentity方法是一种用于创建用户身份的方法。

它是Apache Shiro 身份验证和授权框架中的一部分,用于创建一个表示用户身份的SimplePrincipalCollection对象。

这个方法接受一个参数,该参数可以是用户名、用户ID或其他标识用户身份的值。

第二部分:withIdentity方法的使用步骤使用withIdentity方法可以分为以下几个步骤:1. 引入Apache Shiro库:首先,需要引入Apache Shiro库到项目中。

可以通过在项目的依赖管理文件(如pom.xml)中添加Apache Shiro的依赖项来实现。

2. 创建Subject对象:在进行用户身份验证之前,需要创建Subject对象。

Subject对象代表了当前的用户。

3. 创建和配置Realm对象:Realm是Shiro中的一个关键组件,它负责进行身份验证和授权。

创建Realm对象并进行相应的配置,以实现和用户身份相关的操作。

4. 实例化SimplePrincipalCollection对象:使用withIdentity方法之前,需要实例化一个SimplePrincipalCollection对象。

SimplePrincipalCollection是Shiro中表示用户身份的类,通过将代表用户身份的值传递给构造函数来创建对象。

5. 调用withIdentity方法:调用withIdentity方法,将用户身份值作为参数传递给方法。

Struts1与struts2的区别总结

Struts1与struts2的区别总结

Struts1与struts2的区别总结1,背景:Struts2并不是struts1的升级版,两者没有太大的关系,struts2是继承了webwork的机制,吸收了struts2和webwork的有优势。

Struts2是基于WebWork的一个全新框架. Struts2主要改进是取代了Struts1的Servlet和Action. Struts2的核心框架是当作一个filter来实现其功能的,而Struts1是ActionServlet.然后在Action上,Struts1都少不了要传递Request等参数,还要继承Action父类,而Struts2只要实现了一个public String execute()就可以了,这样Action就可以实现脱离Servlet 测试. Struts2还提供了拦截器(Interceptot)等Struts1所没有的技术.2,Action类Struts1要求action继承一个抽象基类,而struts2既可以继承类又可以实现action对应的接口,即接口编程,可以实现多个接口,使得可选和订制服务成为可能。

3,线程模式Struts1中的action是单例模式,会涉及到线程安全问题,因为仅有一个action来处理所有的请求,而struts2则是非单例模式,每个请求对应一个action,这样就不用考虑线程安全的问题(而且,servlet容器会给每个请求产生可丢弃的对象,这样就不会导致性能和垃圾回收问题)。

4,可测性Struts1中的action有个主要的问题是execute方法暴露了servlet API,这使得测试等需要依赖servlet容器。

一个第三方扩展--struts TestCase--提供了一套struts模拟对象来进行测试;而struts2 中的action可以通过初始化和设置属性(例如action当中直接用get和set方法),调用方法来测试,“依赖式注入”注入也使得测试更容易5,servlet依赖Struts1中的action依赖于servlet API,因为当一个action被调用时,HttpServletRequest和HttpServletResponse对象会被传递给execute方法(请求和响应的对象需要依赖于execute方法,即servlet API);而struts2中的action则不需要依赖于servlet容器,允许action脱离容器单独被测试(例如:struts2中获取请求的对象可以用ServletActionContext.getRequest())。

struts1入门教程

struts1入门教程

1.什么是Struts1基于MVC的轻量级,WEB应用框架2.struts1工作原理a> 初始化: struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象.b> 发送请求: 用户提交表单或通过URL向WEB服务器提供请求,请求的数据用HTTP协议传给WEB服务器.c> form填充: Struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中d> 派发请求: 控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给Action的excute()方法e> 处理业务: Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象.服务器通过ActionForward对象进行转发工作f> 返回响应: Action将业务处理的不同结果返回一个目标相应对象给总控制器g> 查找响应: 总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面h> 响应用户: 目标响应对象将结果传递给资源对象,将结果展现给用户struts1原理图:3.开发指南准备工作:1>到/下载struts的安装文件struts-1.3.10-all.zip2>解压struts-1.3.10-all.zip3>创建一个web project,并将上步中解压的lib文件下的jar包引进去4>配置web文件5>新建struts-config.xml6>创建数据库(mysql4. 项目开发4.1 页面制作index.jsp4.2 在struts-config.xml中需要修改4.3 创建com.javakc.struts1.action.StudentAction 业务类4.4 创建com.javakc.struts1.action.StudentForm类1)继承org.apache.struts.action.ActionForm类2)属性名要和表单中的属性名一一对应,并生成其对应的getter、setter方法4.5 在StudentAction中处理提交的请求1) 通过form表单或超链接可以将用户的请求提交到服务器进行处理,在系统架构中,服务器处理用户请求的场地就是StudentAction类的execute方法.4.6 在student_info.jsp中展示数据。

struts标签说明

struts标签说明

常用Struts标签的使用说明Struts Html标签库1,<html:form>:生成HTML<form>元素,action属性用来指定用户提交表单后,处理用户请求的组建。

Struts 框架将参照struts配置文件来查找相应的action组建。

在struts-config.xml 文件中1,<html:form action=”user.do”> 与user.do对应得代码是:<action parameter="method" name="userForm" path="/user" scope="request" validate="false">2,<html:text/>:生成HTML<input type=”text”>标签的property属性指定字段的名字,对应ActionForm bean中的一个属性,代码如下:<html:text property=”loginName”/> 的对应的userForm bean属性private String login_Name;public String getLogin_Name() {return login_Name;}public void setLogin_Name(String login_Name) {this.login_Name = login_Name;}3,<html:radio/>:生成HTML<input type=”radio”>标签,使用方法与<html:text>相同。

<html:radio property=”isActive” value=”1”>启用</html:radio><html:radio property=”isActive” value=”0”>停用</html:radio>4,<html:select/>:生成HTML<select>标签。

struts1配置文件action

struts1配置文件action
1.Attribute:设置action关联的actionForm在request或session范围内的值。就是在request或session共享内的名称。
2.ClassName:对应配置元素的类,默认是ActionMapping。
3.Forward:制定转发URL路径。
4.Include:制定包含URL路径。
13.type:指定Action类的完整类名。
fo。
9.Roles:指定允许调用该Action的安全角色,多个角色之间以逗号隔开。
10.Scope:指定Form的存在范围,默认是session.type指定的Action的完整名。
11.Unkonwn:如果是true表示可以处理用户发出的所有的无效的ActionURL,默认是false。
12.Validate:指定是否调用ActionForm的validate方法。
5.Input:制定包含表单的URL,当表单验证失败时发送的URL。
:指定和该Action关联的Form名字。改名字必须是在form-bean中定义过的,可写可不写。
7.Path:必须以“/”开头的方位Action的路径。
8.Parameter:指定Action配置参数。在Action的execute()方法中可以调用ActionMapping的getParameter()方法来读取匹配的参数。

struts2入门教程一(环境搭建,基本案例实现)CSDN

struts2入门教程一(环境搭建,基本案例实现)CSDN

Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。

再对起进行修改。

删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。

整合struts1+spring+hibernate框架完成简单的登录

整合struts1+spring+hibernate框架完成简单的登录

*编写环境:*开发工具:Myeclipse6.01*SPRING :spring2.0*STRUTS :struts1.2*HIBERNATE:hibernate3.0*JDK: 1.6*TOMCAT: 6.0*WINDOW641.新建web项目。

2.选中新建项目,右键--》选择“myeclipse”--》添加Struts支持。

3.在弹出的信息框,有必要修改一下图中的地方。

4.上面的操作完成之后,打开我们的项目我们可以看到我们的项目结构发生了变化,引入了一些struts标签和生成了struts-config.xml配置文件。

5.开始添加spring支持,同样选中新建项目,右键--》选择“myeclipse”--》“添加spring 支持”,在弹出的信息框,做如下内容修改:6.点击“next”,直接选择默认,当然也可根据自己的规则做修改。

7.在添加“Hibernate”支持的时候,首先做的工作是创建一个数据源。

这个创建方法有很多中(找百度可得)这里只介绍一种:打开你的myeclipse的右上角的小三角,选择“myeclipsedatabase explorer”在弹出的界面中,在如图位置右键“new”在弹出的界面中做如下修改:修改完成后点击“test driver”成功则继续。

8.暂时回到myeclipse开发界面。

正式开始添加“Hibernate”支持。

在弹出的界面中做如图修改:点击“next”这里如图,选择spring的配置文件。

下一步操作后,做如下图修改操作:下一步之后,界面修改操作,如下图:去掉复选框中的选项,然后点击“finish”完成整个操作。

之后将会直接打开spring的配置文件,然后你核对一下您的数据库连接是否正确。

至此三大支持操作完成,启动没有问题说明框架雏形已经完成。

9.在项目中的WEB-INF下找到web.xml,做如下修改:格式头部分省略,下面是需要新增的代码<!--初始化spring配置参数 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 配置监听 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</list ener-class></listener><!-- 配置spring过滤器解决中文乱码问题 --><filter>Ps :这个时候我们再次启动服务的时候,发现可能会报错:因为我们在刚才已经把spring 的配置文件做了初始化,而在spring 的配置文件中有数据源的连接,而我们的项目中可能还缺少一个包:commons-pool-1.4.jar(/detail/u013806366/7897665 )当我们把这个包放在lib 下,我们再次启动项目的时候,错误信息应该会消失。

stripes框架文档

stripes框架文档

白汉奇XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /白汉奇版权 . 2009 白汉奇本作品在Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported 协议下发布,些协议中已经明确规定你的权利和义务,如果你对此协议不是很了解,可以从 Creative Commons网站上取得一份拷贝。

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /目录1. Stripes 框架简介.............................................................................. .. (1)1.1. 初识Stripes ........................................................................ .. (1)1.2. Stripes vs Struts 1 .............................................................................. . (1)1.3. Stripes vs Struts2 .............................................................................. (3)2. Stripes 快速入门.............................................................................. .. (4)2.1. 安装Sun JDK ............................................................................ (4)2.2. 使用Maven 创建项目.............................................................................. (4)2.2.1. 安装Maven .......................................................................... . (4)2.2.2. 创建Stripes 项目.............................................................................. .. (5)2.3. 使用NetBeans 创建项目.............................................................................. .. (5)2.4. 开始创建Stripes项目.............................................................................. . (9)2.5. Stripes的运行原理.............................................................................. (10)3. 创建ActionBean ..................................................................... (12)3.1. ActionBean 接口.............................................................................. (12)3.2. 处理请求事件.............................................................................. .. (13)3.3. URL 映射.............................................................................. .. (13)4. 输入控制.............................................................................. . (15)4.1. 处理表单.............................................................................. (15)4.2. 用户注册程序.............................................................................. .. (15)4.3. 添加required 约束 ............................................................................. (17)4.4. 其它输入控制.............................................................................. .. (18)4.5. 数据类型转换.............................................................................. .. (18)4.6. 自定义验证方法.............................................................................. .. (19)4.7. 使用嵌套验证.............................................................................. .. (20)4.8. 显示错误信息.............................................................................. .. (21)5. Resolution接口.............................................................................. (23)6. 防止重复提交.............................................................................. . (24)6.1. 使用RedirectResolution ............................................................. (24)6.1.1.FlashScope ..................................................................... (24)6.2. 使用验证码.............................................................................. (25)7. 页面显示.............................................................................. . (28)7.1. 多记录分页显示.............................................................................. .. (28)7.1.1. 使用Display Tag 处理分页 (28)7.1.2. 使用JMesa 进行分页处理 (33)7.2. 分步提交.............................................................................. (36)8. 文件上传.............................................................................. . (40)8.1. 单个文件上传.............................................................................. .. (40)8.2. 多文件上传.............................................................................. (42)9. 文件下载.............................................................................. . (44)10. 页面布局.............................................................................. (46)10.1. 示例.............................................................................. .. (46)10.2. 向layout模板文件传递参数 ............................................................................. . (47)10.3. 嵌套使用.............................................................................. . (48)11. 国际化和本地化.............................................................................. .. (50)11.1. 取得当前Locale ......................................................................... . (50)11.2. 选择字符编码.............................................................................. . (50)11.3. 查找资源信息.............................................................................. . (51)11.4. 示例.............................................................................. .. (51)11.5. 与JSTL共处.............................................................................. . (53)12. Ajax 技术.............................................................................. (54)12.1. 示例:即时检测账号的合法性............................................................................54iiiXML to PDF by RenderX XEP XSL-FO Formatter, visit us at /12.2. 示例:重新获取验证码.............................................................................. .. (55)13. 单元测试.............................................................................. (57)13.1. 使用TestNG 进行测试.............................................................................. . (57)13.2. 使用Stripes 测试API ............................................................................ .. (57)ivStripes快速入门XML to PDF by RenderX XEP XSL-FO Formatter, visit us at /第 1 章 Stripes 框架简介简单的介绍 Stripes 框架本章会对 Stripes 框架作一个简短的介绍。

01、struts2(Struts2开发入门 、常用配置、参数传递) - 副本

01、struts2(Struts2开发入门 、常用配置、参数传递) - 副本

1. Struts2简介1.1. 什么是Struts21.1.1. Struts2的概念Struts2是轻量级的MVC框架,它主要解决了请求分发的问题,重心在于控制层和表现层。

轻量级,指的是Struts2具有较低的侵入性,就是它对我们业务代码的依赖程度很低,简单来说,在使用Struts2框架时,我们的业务代码中基本上不需要import它的包。

Struts2实现了MVC,满足了MVC设计思想。

在我们使用Struts2做开发的时候,就相当于使用了MVC,这是Struts2自动帮助我们实现的,是默认的、隐含的,我们不需要再写特别的代码来实现MVC了。

作为一个框架,Struts2提供了一系列的API,我们可以使用它们来简化代码的编写,从而提升开发效率。

这些API复用程度很高,对业务代码的依赖性也很小,甚至很多是Struts2自动调用的,因此在很大程度上,我们的开发变得可以复用。

Struts2解决请求分发的问题,我们会在后面为什么使用Struts2中讲解。

重心在控制层和表现层,是纵观整个Struts2理论课程来看的,从中我们会体会到这一点,随着大家对Struts2的逐步了解,届时我们再回顾这一点。

1.1.2. 什么是MVCMVC是代码的分层思想,是软件设计领域经典的设计模式。

它根据代码功能的不同,将一个软件的代码分为3部分,即模型、视图、控制器,这3部分代码的含义和功能如下。

1、M-Model 模型模型(Model)的职责是负责业务逻辑。

包含两层:业务数据和业务处理逻辑。

比如实体类、DAO、Service都属于模型层。

2、V-View 视图视图(View)的职责是负责显示界面和用户交互(收集用户信息)。

属于视图的组件是不包含业务逻辑和控制逻辑的JSP。

3、C-Controller 控制器控制器是模型层M和视图层V之间的桥梁,用于控制流程。

比如:在Servlet项目中的单一控制器ActionServlet。

Struts2详细实例教程

Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。

五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。

七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。

在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。

在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。

Java面试宝典PDF版

Java面试宝典PDF版

28、AnonymousInner Class (匿名内部类)是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接 口)?...................................................................................................................2 29、super.getClass()方法调用.....................................................................2 30、String 是最基本的数据类型吗?.....................................................................2 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的内容到 底变了没有? 2 32、是否可以继承 String 类?..............................................................................2 33、String s =new String("xyz");创建了几个 String Object?二者之间有什么区别? 2 34、String 和 StringBuffer 的区别.......................................................................2 35、如何把一段逗号分割的字符串转换成一个数组?...........................................2 36、数组有没有 length()这个方法?String 有没有 length()这个方法?...................2 37、下面这条语句一共创建了多少个对象:Strings="a"+"b"+"c"+"d";.................2 38、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 code 会不会被执行, 什么时候被执行,在 return 前还是 后?.................................................................................................2 39、下面的程序代码输出的结果是多少?...........................................................2 40、final,finally, finalize 的区别。......................................................................2 41、运行时异常与一般异常有何异同?..............................................................2 42、error 和 exception 有什么区别?.....................................................................2 43、Java 中的异常处理机制的简单原理和应用。................................................2 44、请写出你最常见到的5个 runtimeexception。...............................................2 45、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代表什么意 义?在 try 块中可以抛出异常 吗?............................................................................................................2 46、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend() 方法为何不推荐使 用?..........................................................................................................................2 47、sleep()和 wait() 有什么区别?.....................................................................2 48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。.................2 49.下面两个方法同步吗?(自己发明)...........................................................2 50、多线程有几种实现方法?同步有几种实现方法?.............................................2

Struts2项目操作手册

Struts2项目操作手册

前言其实神马都是浮云。

相关软件下载1.下载Struts2.2.1.1 /download.cgi#struts217(选择下载fulldistribution)2.下载eclipse,/downloads/(选择下载Eclipse IDE for Java EEDevelopers Windows 32 Bit)3.下载tomcat6.0,4.下载JDK1.6,/download/jdk6安装与设置1.解压struts-2.2.1.1-all.zip2.安装Eclipse(解压即可)3.假设你已经安装好jdk和tomcat了,如C:\JAVA_TOOLS\apache-tomcat-6.0.16和C:\JAVA_TOOLS\JDK\ jdk1.6.0_02HelloWorld1.Eclipse中设定servera)Window –Preferences –Server –Runtime Environments –Add –Apache –ApacheTomcat v6.0(注意选中对话框下方的Create a new local server复选框)b)选择Tomcat installation directoryc)选择JREd)Finishe)双击下方Servers选项卡中的Tomcat v6.0 Server at localhost,设置Server Locations中的Deploy path为Tomcat安装目录下的webapps目录,注意保存文件。

2.Eclipse中建立项目a)打开eclipseb)新建项目c)选择web节点下的Dynamic Web Projectd)项目名称:struts2HelloWorld(注意选中Target runtime为设定好的Server)3.Eclipse中部署运行项目a)右击Servers选项卡中的Tomcat v6.0 Server at localhost,选择Add and Remove添加需要部署的Java web项目。

struts2讲义

struts2讲义

e.g. ums_struts2_02_action/struts.xml Ⅲ. 使用 DMI 或通配符 目的:减少 Action 的数量 方式一:动态方法调用(Dynamic Method Invocation DMI,struts2.1 后不建议使 用) 定义一个 Action 类,类中可以定义多个与 execute()方法,声明部分相同但方法名 不同的方法。 e.g. ums_struts2_02_action/UserAction_DMI.java 1、定义 UserAction_DMI 类
e.g. ScopeAction_3.java 方式四:实现 ServletRequestAware 接口
e.g. ScopeAction_4.java 注意:1、其中,前两种方式与 Servlet API 解耦合,后两种方式与 Servlet API 耦合,推荐使 用第二种方式,第二种方式使用了 IOC 的模式,解耦合更好。 Ⅵ.Action 中生成响应信息 e.g. ums_struts2_02_result Struts2 框架通过 Action 中 execute()方法的返回值,与 struts.xml 中<action>的<result>元 素的 name 属性值来判断最终响应信息的内容。其中<result>元素设置如下: <result type=”结果类型” name=”名称”>WEB 资源路径或名称</result> 说明: 1、name:result 名称随便起,默认为“success“,与 execute 方法返回值一致。 2、 WEB 资源路径或名称:WEB 资源路径如果为相对路径,则该路径相对于 WEB 应用上下文。如果跳转到 Action 则为该 Action 所对应的<action>元素的 name 值。 3、 type:设置生成响应信息的类型,默认为 dispatcher。 (Ⅰ)ActionSupport 中预定义的结果常量 在 Struts2 的 ActionSupport 类中预定义了一些 Result 常量,当定义的 Action 类继承了 ActionSupport 时就可以使用这些结果常量,当然也可以使用自定义的 result 字符串。

Struts常用action作用和用法

Struts常用action作用和用法

Struts常用action作用和用法Struts中提供了几种比较通用的action,这些action使用方便灵活,配置简单。

它们的继承关系如下图所示。

我们完全可以使用这些现成的action,没有必要重复制造轮子。

下面主要介绍我整理的这些action的作用和使用方法,适合于对struts有一定了解人员,欢迎批评指正。

1、ForwardAction(1)作用用于转发请求,相当于JSP中的<jsp:forward>。

MVC设计原则是控制器负责处理所有请求,然后选择适当的视图组件返回给用户。

在Struts应用中,应尽量避免直接链接JSP资源,否则将脱离控制器的控制,比如:<jsp:forward page=”../xx.jsp”>、<a href=”../xx.jsp”>、<html:link page=”../xx.jsp”>。

Struts控制器具有预处理请求功能,它能够选择正确的子应用模块来处理请求,把子应用模块的ModuleConfig和MessageResourc es对象存放在request范围内。

使用ForwardAction,请求转发的目标Web组件就可以正常地访问ModuleConfig和MessageResources对象。

(2)使用方法ActionServlet把请求转发给ForwardAction,ForwardAction再把请求转发给<action>元素中parameter属性指定的Web组件。

在struts-config.xml中配置相应的action就可以了,parameter是要转向到的url地址,如下所示。

<action path="/forwardIndex"type="org.apache.struts.actions.ForwardAction"parameter="/index.jsp"/>当请求“/forwardIndex”它就把控制跳转到parameter所指的“/index.jsp”2、IncludeAction(1)作用用于包含其他Web组件,相当于JSP中的<jsp:include>。

Struts中文帮助文档详解

Struts中文帮助文档详解

3 S TRUTS 详解 (1)3.1.1 传统的Model 1和Model 2.......2 3.1.2 MVC 及其优势.. (3)3.2 S TRUTS 概述 (4)3.2.1 Struts 的起源.............................4 3.2.2 Struts 的体系结构 (4)3.3 S TRUTS 的下载和安装..............................5 3.4 S TRUTS 入门. (6)3.4.1 基本的MVC 示例......................6 3.4.2 Struts 的基本示例...................13 3.4.3 Struts 的流程 (16)3.5 S TRUTS 的配置 (17)3.5.1 配置ActionServlet ...................17 3.5.2 配置ActionForm .....................19 3.5.3 配置Action ..............................20 3.5.4 配置Forward .. (21)3.6 S TRUTS 程序的国际化 (22)3.6.1 Java 程序的国际化.................23 3.6.2 Struts 的国际化.. (26)3.7 使用动态A CTION F ORM (30)3.7.1 配置动态ActionForm .............30 3.7.2 使用动态ActionForm . (31)3.8 S TRUTS 的标签库 (32)3.8.1 使用Struts 标签的基本配置....32 3.8.2 使用html 标签库......................33 3.8.3 使用bean 标签库.....................35 3.8.4 使用logic 标签库..................42 3.9 S TRUTS 的数据校验 (53)3.9.1 ActionForm 的代码校验.........54 3.9.2 Action 的代码校验...................57 3.9.3 结合commons-validator.jar 的校验 (58)3.10 S TRUTS 的异常框架...............................66 3.11 几种常用的A CTION (69)3.11.1 DispatchAction 及其子类......70 3.11.2 使用ForwardAction ..............74 3.11.3 使用IncludeAction ................74 3.11.4 使用SwitchAction (75)3.12 S TRUTS 的常见扩展方法 (76)3.12.1 实现PlugIn 接口....................76 3.12.2 继承RequestProcessor ..........77 3.12.3 继承ActionServlet .. (79)本章小结 (80)3 Struts 详解从实际应用开发的角度而言,Struts 应该是MVC 框架的第一选择。

struts token 机制学习理解

struts token 机制学习理解

struts2中使用token避免重复提交1.在struts.xml中<action name="register" class="org.sunxin.struts2.action.RegisterAction"><!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面--><exception-mapping result="error" exception="ng.Exception"/><result name="input">/pages/register.jsp</result><result name="success">/pages/success.jsp</result><result name="error">/pages/error.jsp</result><result name="invalid.token">/pages/register.jsp</result><result name="wait">wait.jsp</result><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="token"><param name="excludeMethods">input</param></interceptor-ref></action>2.在页面中加<s:actionerror/><s:form action="register" method="post"><s:token></s:token></s:form>3.<interceptor-ref name="token"/><interceptor-ref name="token-session"/><!--注意struts2.0 拦截器名字为token-session struts2.1.2 已经更改为tokenSession -->token: 在活动中检查合法令牌(token), 防止表单的重复提交; 在<s:actionerror/>会产生提示信息token-session: 同上, 但是在接到非法令牌时将提交的数据保存在session中; 不会在<s:actionerror/>会产生提示信息只会在后台发出警告并处理,如下:警告: Form token KO80SIJW4F84034NG5HM1ZBUGOVNY64D does not match the session token null.编辑特别推荐:为struts1.2增加token标签令牌标签[修改更新 2009-07-28 修复了一个BUG]2009-07-23 17:282009-07-28更新提醒:修改了一个页面不能存在多个表单的BUGpackage com.tgmsp.CongZhong.tag;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;import org.apache.struts.Globals;import org.apache.struts.taglib.html.Constants;import org.apache.struts.util.TokenProcessor;public class TokenTag extends TagSupport {public int doEndTag() throws JspException {HttpServletRequest request =(HttpServletRequest)pageContext.getRequest();JspWriter out = pageContext.getOut();try {Object tmp = null;String token = (tmp =request.getSession().getAttribute(Globals.TRANSACTION_TOKEN_KEY))==nu ll?TokenProcessor.getInstance().generateToken(request):tmp.toString() ;if (token != null) {request.getSession().setAttribute(Globals.TRANSACTION _TOKEN_KEY, token);out.println("<input type=\"hidden\"name=\""+Constants.TOKEN_KEY+"\" value=\""+token+"\"/>");}} catch (IOException e) {e.printStackTrace();}return this.EVAL_PAGE;}}....标签配置部分<tag><name>token</name><tagclass>com.tgmsp.CongZhong.tag.TokenTag</tagclass><bodycontent>empty</bodycontent><info><![CDATA[保存Struts令牌org.apache.struts.action.TOKEN<congzhong:token/>]]></info></tag>....实例一:防止表单重复提交防止重复提交:有两种方法:一是使用token拦截器,二是使用tokenSession第一种方法步骤:1、先在页面中放一个令牌。

科友加密机接口

科友加密机接口

编程手册编程手册 (1)第一篇编程指南 (6)1.1简要介绍 (6)1.2一般说明 (6)1.3三倍DES运算 (7)1.3.1密钥的用法 (7)1.3.2密钥的加密方案 (7)1.ANSI X9.17方式 (7)2.变量方式 (7)YYYY YYYY YYYY YYYY (8)BBBB BBBB BBBB BBBB (8)YYYY YYYY YYYY YYYY (8)BBBB BBBB BBBB BBBB (8)CCCC CCCC CCCC CCCC (8)YYYY YYYY YYYY YYYY (8)ZZZZ ZZZZ ZZZZ ZZZZ (8)BBBB BBBB BBBB BBBB (8)CCCC CCCC CCCC CCCC (8)1.4密钥的生成、输入和输出 (8)1.5命令消息格式 (9)1.5.1TCP/IP方式 (9)1.5.2串口Async方式 (9)1.6响应消息格式 (10)1.6.1TCP/IP方式 (10)1.6.2串口Async方式 (11)1.7数据的表示 (11)1.7.1ASCII字符编码 (12)1.7.2EBCDIC字符编码 (12)1.7.3EBCDIC码至ASCII码的转换表 (14)1.8输入/输出流控制 (16)1.9错误控制 (16)1.10多HSM的使用 (17)1.11用户存储 (17)1.11.1分配和使用索引 (18)1.11.2指定存储数据 (19)1.12通过一台连接在HSM上的打印机打印 (20)1.13禁止弱密钥和半弱密钥 (20)1.13.1DES弱密钥 (20)1.13.2DES半弱密钥 (21)1.14本地主密钥 (21)1.14.1LMK表 (21)1.14.2标准测试用LMK集 (22)1.15本地主密钥变种 (23)1.16本地主密钥三DES变量方案 (24)1.16.1一般说明 (24)1.16.2密钥类型表 (25)1.16.3密钥方案表 (26)第二篇主机命令 (27)2.1一般说明 (27)2.2通用密钥管理命令 (27)2.2.1生成密钥 (28)2.2.2生成并打印一个成份 (29)2.2.3由密的成份组成一个密钥 (31)2.2.4输入一个密钥 (32)2.2.5输出一个密钥 (33)2.3区域主密钥(ZMK)管理 (34)2.3.1生成并打印一个ZMK成份 (35)2.3.2由三个ZMK成份组成一个ZMK (37)2.3.3由2到9个ZMK成份组成一个ZMK (38)2.3.4将ZMK由ZMK转为LMK加密 (40)2.4区域PIN密钥(ZPK)管理 (42)2.4.1生成一个ZPK (43)2.4.2将ZPK由ZMK转为LMK加密 (44)2.4.3将ZPK由LMK转为ZMK加密 (46)2.5区域加密密钥,区域认证密钥管理 (47)2.5.1生成一个ZEK/ZAK (48)2.5.2将ZEK/ZAK从ZMK转为LMK加密 (49)2.5.3将ZEK/ZAK从LMK转为ZMK加密 (50)2.6终端主密钥,终端PIN密钥和终端认证密钥管理 (51)2.6.1生成并打印一个TMK、TPK或PVK (52)2.6.2生成一个TMK、TPK或PVK (54)2.6.3将TMK、TPK或PVK从LMK转为另一TMK、TPK或PVK加密542.6.4将TMK、TPK或PVK从ZMK转为LMK加密 (55)2.6.5将TMK、TPK或PVK从LMK转为ZMK加密 (56)2.6.6生成一对PVKs (57)2.7终端认证密钥管理 (60)2.7.1生成一个TAK (61)2.7.2将TAK从ZMK转为LMK加密 (62)2.7.3将TAK从LMK转为ZMK加密 (63)2.7.4将TAK从LMK转为TMK加密 (64)2.8PIN和Offset的生成 (65)2.8.1生成一个随机的PIN (66)2.8.2生成一个VISA的PIN校验值 (67)2.9PIN校验 (68)2.9.1校验一个用VISA方式的终端PIN (68)2.9.2校验一个用VISA方式的、用于交换的PIN (69)2.9.3校验一个用比对方式的终端PIN (70)2.9.4校验一个用比对方式的、用于交换的PIN (71)2.10PIN翻译 (72)2.10.1将PIN从一个ZPK翻译到另一个ZPK(已升级) (73)2.10.2将PIN从TPK翻译到ZPK (75)2.10.3将PIN从ZPK翻译到LMK (76)2.10.4将PIN从TPK翻译到LMK (77)2.10.5将PIN从LMK翻译到ZPK (78)2.11PIN请求数据处理 (79)2.12清除PIN支持 (81)2.12.1加密一个明文的PIN (82)2.13主机口令支持 (82)2.14消息认证码支持 (83)2.14.1生成一个MAC (84)2.14.2校验一个MAC (85)2.14.3校验并转换一个MAC (85)2.14.4用ANSI X9.19方式对大消息生成MAC(MAB) (86)2.14.5用银联方式对大消息生成MAC(MAB) (88)2.15打印输出的格式 (92)2.15.1字格式打印PINs (95)ONE TWO THREE FOUR (95)2.15.2以列形式打印PINs (96)2.15.3装载格式化数据至HSM (97)2.15.4装载附加格式化数据至HSM (98)2.16复合命令 (99)2.16.1退出授权状态 (99)2.16.2生成密钥校验值(非双倍长度ZMK) (100)2.16.3生成密钥校验值 (101)2.16.4完成诊断 (102)2.16.5HSM状态 (103)2.17VISA卡校验值 (104)2.17.1生成CVK对 (105)2.17.2将CVK对由LMK下加密转换为ZMK下加密 (105)2.17.3将CVK对由ZMK下加密转换为LMK下加密 (106)2.17.4生成VISA CVV (107)2.17.5校验VISA CVV (108)2.17.6用EDK密钥加解密数 (109)第三篇PIN格式 (110)3.1一般说明 (110)3.2格式01 (110)3.3格式02 (111)3.4格式03 (111)3.5格式04 (112)3.6格式05 (113)1NP1...PNR...R . (113)第四篇错误代码 (113)4.1错误代码表 (113)第五篇名词表 (115)5.1一般说明 (115)文档修订记录版本创建日期作者校订备注1.02007/12/21第一篇编程指南1.1 简要介绍HSM(Host Security Module)称为主机安全模块(注:以下将主机安全模块均称为HSM),作为主机的外围设备,为主机在一个物理上安全的环境中实现加/解密运算的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本系列教程将详细介绍Struts 1.x的基本原理和使用方法,读者可以参阅《Struts 2系列教程》来比较Struts 1.x和Struts 2.x的相同点和不同点。

在这篇文章中将以一个简单的例子(mystruts)来演示如何使用MyEclipse来开发、运行Struts程序,并给出了解决ActionForm出现乱码问题的方法。

读者可以从本文中了解开发Struts 1.x程序的基本过程。

一、本文给出的程序要实现什么功能mystruts是一个录入和查询产品信息的程序。

为了方便起见,本例中的产品信息表只包括了产品ID、产品名称和产品价格三个字段。

mystruts的主要功能如下:1. 接受用户输入的产品ID、产品名称和产品价格。

2. 验证这些字段的合法性。

如果某些字段的输入不合法(如未输入产品ID),程序会forward到一个信息显示页,并显示出错原因。

3. 如果用户输入了正确的字段值,程序会将这些字段值保存到数据库中,并显示“保存成功”信息。

4. 用户输入产品名称,并根据产品名称进行模糊查询。

如果存在符合要求的产品信息。

程序会以表格形式显示这些产品的信息,同时显示记录数。

如果未查到任何记录,会显示“没有符合要求的记录!”信息。

二、编写程序前的准备工作1. 建立数据库在编写程序之前,需要建立一个数据库(struts)和一个表(t_products),建立数据库和表的SQL脚本如下所示:# 建立数据库strutsCREATE DATABASE IF NOT EXISTS struts DEFAULT CHARACTER SET GBK;# 建立表t_productsCREATE TABLE IF NOT EXISTS struts.t_products (product_id varchar(4) NOT NULL,product_name varchar(50) NOT NULL,price float NOT NULL,PRIMARY KEY (product_id)) ENGINE=InnoDB DEFAULT CHARSET=gbk;2 建立一个支持struts1.x的samples工程用MyEclipse建立一个samples工程(Web工程),现在这个samples工程还不支持Struts1.x (没有引入相应的Struts jar包、struts-config.xml文件以及其他和Struts相关的配置)。

然而,在MyEclipse中这一切并不需要我们手工去加入。

而只需要使用MyEclipse的「New Struts Capabilities」对话框就可以自动完成这些工作。

首先选中samples工程,然后在右键菜单中选择「MyEclipse」> 「New Struts Capabilities」,启动「New Struts Capabilities」对话框。

对默认的设置需要进行如下的改动:(1)将Struts specification改为Struts 1.2.(2)将Base package for new classes改为struts.(3)将Default application resources改为struts.ApplicationResources.改完后的「New Struts Capabilities」对话框如图1所示。

点击查看大图在设置完后,点击Finish按钮关闭对话框。

在向samples工程添加支持Struts的功能后,主要对samples工程进行了三个操作。

(1)引入了Struts 1.2 的jar包(在samples的工程树中多了一个Struts 1.2 Libraries节点)。

(2)在WEB-INF目录中添加了一个struts-config.xml文件。

文件的默认内容如下面的代码所示:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources /><form-beans /><global-exceptions /><global-forwards /><action-mappings /><message-resources parameter="struts.ApplicationResources" /></struts-config>(3)在WEB-INF中的web.xml文件中添加了处理Struts动作的ActionServlet的配置,代码如下:<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>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>到目前为止,samples工程已经完全支持Struts了。

读者可以看到,如果不使用MyEclipse,那么上面所列出的配置文件的内容都必须手工输入。

因此,使用MyEclipse来开发Struts程序可以省去很多配置xml文件的工作。

三、实现程序的首页(index.jsp)首先在<samples工程目录>中建立一个mystruts目录,然后在<samples工程目录>" mystruts 目录中建立一个index.jsp文件,这个文件的内容如下。

<%@ page pageEncoding="GBK"%><%-- 引用Struts tag--%><%@ taglib uri="/tags-html" prefix="html"%><html><head><title>主界面</title></head><body><table align="center" cellpadding="10" width="100%"><tr><td align="right" width="50%"><%-- 使用Struts tag--%><html:link forward="newProduct">录入产品信息</html:link></td><td><html:link forward="searchProduct">查询产品信息</html:link></td></tr></table></body></html>在MyEclipse中启动Tomcat(如果Tomcat处于启动状态,在修改完配置文件后,建议在MyEclipse的Servers页重新发布samples工程,以使修改生效)。

在IE中输入如下的URL:http://localhost:8080/samples/mystruts/index.jsp我们发现在输入上面的URL后,在IE中并未显示正确的运行结果,而是抛出了如下的异常:.MalformedURLException:Cannot retrieve ActionForward named newProduct 这个异常表明程序并未找到一个叫newProduct的forward(forward将在后面详细地讲述)。

因此,可以断定,在JSP中使用forward时,这个forward必须存在。

下面我们来添加index.jsp 页面中所使用的两个forward:newProduct和searchProduct.这两个forward分别引向了建立产品信息的页面(newProduct.jsp)和查询产品信息的页面(searchProduct.jsp)。

我们可以在struts-config.xml文件中<struts-config>节点中添加两个全局的forward,代码如下:<global-forwards><forward name="newProduct" path="/mystruts/newProduct.jsp" /><forward name="searchProduct" path="/mystruts/searchProduct.jsp" /></global-forwards>上面的代码中所示的newProduct.jsp和searchProduct.jsp目前并不存在(将在以后实现这两个JSP页面),现在重新输入上述的URL,会得到如图2所示的效果。

相关文档
最新文档