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基础知识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 教程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 文档中的节点或者节点集。
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入门教程

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 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

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入门初步需掌握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>无法加载插件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 CHARACT ER 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//D TD 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所示的效果。