2.1《研磨struts2》 第二章 Struts2的HelloWorld 之 概述
Struts2学习之二--Struts2标签介绍
Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。
如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。
我的E-MAIL:Max.M.Yuan@。
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。
1.非UI标志o if、elseif和else描述:执行基本的条件流转。
参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。
学习struts2——常见问题与处理
学习struts2.2.1遭遇滑铁卢~~~~~好多异常~~~~~好多bug~~~~好多问题~~~~~~好多困难~~~好多肥羊~~~一、Filter mapping specifies an unknown filter name ----filter标签在web.xml 里的顺序<filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter>这样写启动服务器时报错 Filter mapping specifies an unknown filter nameadminOperateLogFilter将这两块换个顺序就没问题了,web.xml信息的加载是有顺序的,filter在mapping之前必须要让服务器找到其定义。
<filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter><filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>二、ng.IllegalArgumentException: Filter mapping specifies an unknown filter nameStruts2答:“Struts2”?大写的?are you sure?我猜你一定是看了某struts2.0的权威指南(那是一个chm文件电子书,而且你看的可能是翻译成中文的),我不知道英文版的有没有写错,但是我检查了很久后才发现中文版存在这个大小写错误。
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完成初始化操作。
struts2注解使用
struts2注解使用从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention 插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定自动配置。
如何使用Convention1. 将struts-Convention-plugin-2.1.6.jar文件复制到WEB-INF/lib路径下2. 对于Convention插件而言,它会自动搜索位于action,actions,struts,struts2包下的所有java类,Convention插件会把如下两种java类当成Action 处理:1)所有实现了com.opensymphony.xwork2.Action的java类2)所有类名以Action结尾的java类3. Convention插件还允许设置如下三个常量:1)struts.Convention.exclude.packges:指定不扫描哪些包下的java类,位于这些包结构下的java类将不会自动映射成Action;2)struts.convention.package.locators:Convention插件使用该常量指定的包作为搜寻Action的根包。
对于actions.fore.LoginAction类,按约定原本应映射到/fore/login;如果将该常量设为fore,则该Action将会映射到/login 3)struts.convention.action.packages:Convention插件以该常量指定包作为根包来搜索Action类。
Convention插件除了扫描action,actions,struts,struts2四个包的类以外,还会扫描该常量指定的一个或多个包,Convention会试图从中发现Action类。
helloWorld
二、登陆页面login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登陆页面</title> </head> <body> <!-- 用form标签生成一个表单元素 --> <s:form action="Login"> <!-- 生成一个用户名文本框 --> <s:textfield name="username" label="用户名" /> <!-- 生成一个密码文本框 --> <s:textfield name="password" label="密 码" />
MyEclipse开发Struts2详解(一)
MyEclipse开发Struts2详解(一)让迷茫者清晰让清晰者坚定让坚定者辉煌一、准备1、下载安装java,本文使用的名称及版本为为jdk1.6.0-202、下载Tomcat,本文使用的名称及版本为apache-tomcat-6.0.183、下载安装MyEclipse,本文使用的名称及版本为MyEclipse.8.0.GA4、下载Struts2,本文使用的名称及版本为struts-2.1.6二、开发、配置第一个工程启动MyEclipse,新建Web Project工程,取名如为Struts2_0100,并在J2EE Specification Level中选中Java EE 5.0建好工程后,第一步就是要设置你自己的Tomcat,其配置步骤如下:从MyEclipsr的Window菜单开始,依次单击选择Window→Preferences→MyEclips→Servers→Tomcat→Tomcat 6.x在下图中单击Browse选择你的Tomcat,并选中Enable单选按钮。
第二步是配置自己的JDK:Window→Preferences→Java→Installed JRE,如下图:单击Add,添加自己的jdk。
第三步就是配置你的Struts2环境了。
配置时,我们可以借鉴Struts2开发包中的实例。
把事先下载的struts2程序包(本文使用的版本为2.1.6)解压后打开可看到该开发包中有4个文件夹:apps是一些实例文件;docs是帮助文档;lib是开发包;src是开源的源代码。
Apps是一些实例,我们可以借助于这些实例来配置我们自己的开发环境,通过复制粘贴修改即可达到我们自己的目的。
进入apps中,可看到有5个war文件,这些实际是压缩文件,可用解压软件打开。
其struts2-blank-2.1.6.war是最基本的配置,解压后进入apps\struts2-blank-2.1.6\WEB-INF\lib中,选择开发struts2须最小配置的几个包:commons-fileupload-1.2.1.jar(处理文件上传的)、commons-io-1.3.2.jar(是commons-fileupload-1.2.1.jar所依赖的)、commons-logging-1.1.jar(关于日志处理的)、ognl-2.6.11.jar(对象图的表达语言)、struts2-core-2.1.6.jar(struts2的核心包)、xwork-2.1.2.jar(基于xwork的内核)、freemarker-2.3.13.jar()把这个7个jar直接拷贝粘贴到刚才新建的web工程中的:WebRoot/WEB-INF/lib中,此时MyEclipse会自动新建一个引用库夹Referenced Libraries,所拷贝的几个包自动进入其中。
1.2《研磨struts2》 第一章 Struts2概述 之 Struts2基础
2012-07-19 15:54:04《研磨struts2》第一章Struts2概述之Struts2基础浏览(8245)|评论(1) 交流分类:Java|笔记分类: 研磨struts21.2 Struts2 基础1.2.1 Struts1时代随着时间的推移,Servlet+JSP+JavaBean模型暴露出了它的缺点:∙流程凌乱:Servlet在完成对用户请求的处理后,下一个页面是谁?如何跳转过去?这些都是在Servlet里面直接写代码来完成的。
导致Servlet既要处理请求,还要负责页面的流程,使得Servlet功能不够单一,更要命的是很难整体把握整个系统的页面流程,因为流程被分散到各个Servlet里面了。
∙数据传递无序:在Model2模型里面,通常情况下,数据都是使用JavaBean传来传去的,使用上比较麻烦,而且在面临复杂数据嵌套的时候使用JavaBean,常常感觉力不从心。
∙缺乏辅助功能:几乎所有的东西都要程序员从头做起,没有统一的分发调度、验证框架、国际化、本地化、例外消息处理等等。
正当大家感觉痛苦的时候,Struts1勇敢地站出来解决这些问题。
Struts1是一个按照MVC模式开发的轻量级web应用框架,一经推出就很快风靡全球。
对于那些一直在用Servlet+JSP+JavaBean的web开发者来说,Struts1可以帮助他们解决很多问题。
比如:合理的代码结构划分,各种各样的实用工具框架(如验证框架、国际化框架)等等。
因此,在Struts1普及之后,大多数面试官进行面试的时候,每面必问到Struts1。
那个时候Struts1真可谓一统江湖,在简历上如果没写能熟练使用Struts的话,就好像给自己判了死缓一样。
但是,随着时间的推移,Struts1的各种缺点也体现出来了,比如:∙Action实现类必须继承Struts1中的Action,降低了灵活性。
∙在一个应用中,只能使用一个单一的ActionServlet,可能会导致配置冲突∙Action的API同HttpServletRequest和HttpServeletResponse是耦合的,这使得单元测试变得很困难,虽然最后推出了一个StrutsTestCase,但是使用也比较麻烦。
Struts2学习总结(完整版)
Struts2学习总结(完整版)⼀、搭建struts2环境1、jar包的导⼊主要是到解压其中的⼀个⼯程,得到⾥⾯lib下包含的jar包把这⾥的所有的jar包拷贝到项⽬的WEB-INF⽬录下的lib⽂件夹下⾯。
2、配置struts.xml⽂件注意:必须要放在src⽬录下,因为struts2源码就是这样设计的,只有在src⽬录下才读取得到。
每⼀个package都要extends=”struts-default”,namespace 是访问的路径Action中的name和 package中的namespace组成完整的访问路径3、配置web.xml<filter><filter-name>action2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>action2</filter-name><url-pattern>/*</url-pattern></filter-mapping>4、编写的Action类都要继承ActionSupport类或者implements Action接⼝默认action类访问的是⾥⾯的execute⽅法如果要访问特定的⽅法,可以这样:(1)在action 后⾯指定 method=“⽅法名”(2)使⽤通配符 <action name=”example_*” class=”com.XX.YY.ZZ” method=”{1}” />(3)使⽤动态表达式⽐如example!execute(不常⽤)5、接收表单提交的数据(1)属性驱动获取表单参数--在action类中定义与表单的input中 name ⼀样的属性(必须⼀样,否则注⼊不进去)同时还要⽣产属性对应的set ⽅法,因为 action类要调⽤set⽅法把表单中的参数注⼊到属性中(2)模型驱动获取表单参数--模型驱动⾸先action类要实现ModelDrivern,然后重写getModel⽅法--在action类中声明并创建接收表单参数的实体类(Student user = new Student())--原理分析:struts2调⽤action类的getModel⽅法,得到user对象,然后利⽤user对象⾥⾯的set属性的⽅法,设置user对象的属性值--注意,表单的参数name必须要跟Student的属性值⼀致,否则注⼊不进去。
Java使用框架:Struts 2框架使用指南
Java使用框架:Struts 2框架使用指南引言:在当今快节奏的软件开发领域,使用框架已经成为一种常见的做法。
框架可以帮助开发人员更高效地构建应用程序,提高开发速度和质量。
在Java开发领域,Struts 2框架是一个非常受欢迎的选择。
本文将为读者提供一个详细的Struts 2框架使用指南,帮助他们更好地理解和应用该框架。
第一部分:Struts 2框架简介1.1 Struts 2框架概述Struts 2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。
它提供了一组用于开发Web应用程序的组件和工具,如控制器、视图和模型。
Struts 2框架的目标是简化Web应用程序的开发过程,提高应用程序的可维护性和可扩展性。
1.2 Struts 2框架的特点- 提供了清晰的MVC架构,使开发人员能够更好地组织和管理代码。
- 支持灵活的配置和注解,使开发人员能够根据具体需求进行定制。
- 提供了丰富的标签库和表单验证机制,简化了用户界面的开发和验证过程。
- 整合了许多常用的Java技术,如Hibernate、Spring和Tiles,提供了更强大的功能和扩展性。
第二部分:Struts 2框架的核心组件2.1 控制器(Action)Struts 2的控制器被称为Action。
一个Action是一个Java类,用于处理用户请求并生成相应的结果。
在Struts 2中,Action可以使用注解或配置文件进行声明和配置。
开发人员可以通过继承ActionSupport类来简化Action的开发。
2.2 视图(View)Struts 2的视图用于呈现结果给用户。
视图可以是JSP、FreeMarker模板或其他支持的模板引擎。
Struts 2提供了丰富的标签库和表单标签,使开发人员能够更轻松地构建用户界面。
2.3 模型(Model)Struts 2框架本身不提供持久化机制,但它可以与其他持久化框架(如Hibernate)集成。
Struts2的运行流程(Java私塾)
Struts2的运行流程(java私塾)Struts2的运行流程3.2.1 运行流程先回忆一下在HelloWorld中,我们做了什么:∙在web.xml中配置了Struts2的过滤器∙写了一个Action类,名称为HelloWorldAction∙在struts.xml中配置了这个Action类∙写了两个页面,一个是登录页面,一个是欢迎页面只做了这么点事情,就可以在Struts2的帮助下顺利完成功能调用,那么Struts2内部是怎么运行的呢?逐步来根据架构图进行分析。
1:首先是在登录页面,用户填入帐号和密码,然后点击提交按钮,好了,就从这里开始分析背后的处理流程,这是我们进行分析的起点。
2:当用户提交登录请求后,请求的URL为:“/helloworld/helloworldAction.action”,请求会被Tomcat服务器接收到,Tomcat服务器会根据请求URL中的web上下文,也就是“/helloworld”,来选择处理这个请求的Web应用,那就是由helloworld这个web工程来处理这个请求。
3:Web容器会去读取helloworld这个工程的web.xml,在web.xml中进行匹配,发现后缀为“.action”的请求,由struts2这个过滤器来进行处理,根据Filter的配置,找到实际的类为FilterDispatcher。
4:Web容器会获取FilterDispatcher这个类的实例,然后回调doFilter方法,进行真正的处理。
FilterDispatcher作为前端控制器,是整个Struts2的调度中心。
注意:在架构图上,可以看到有三个过滤器层次,分别是ActionContextCleanUp、SiteMesh等其他过滤器和FilterDispatcher。
这三个层次中,ActionContextCleanUp和FilterDispatcher是Struts2的过滤器,而SiteMeshSiteMesh等其他过滤器不是。
struts2工作原理
struts2工作原理Struts2是一个基于MVC设计模式的开源Web应用框架,它的工作原理是通过一系列的组件和机制来实现对Web应用程序的控制和管理。
在深入了解Struts2工作原理之前,我们先来了解一下MVC设计模式。
MVC是Model-View-Controller的缩写,它是一种软件架构模式,用于将应用程序的逻辑层、数据层和表现层分离开来。
在MVC 模式中,Model代表应用程序的数据和业务逻辑,View代表用户界面,Controller负责处理用户的输入并作出相应的反应。
在Struts2中,请求首先由前端控制器DispatcherServlet接收,DispatcherServlet将请求分发给相应的Action。
Action是Struts2框架中的核心组件,它负责处理用户的请求,并调用相应的业务逻辑处理数据。
在处理完业务逻辑之后,Action将结果返回给DispatcherServlet,DispatcherServlet再将结果渲染到用户界面上。
在Struts2中,配置文件也扮演着非常重要的角色。
通过配置文件,我们可以将请求映射到相应的Action,配置拦截器来处理用户的请求,以及配置全局结果集来统一处理Action的返回结果。
所有这些配置都是通过XML文件或注解来实现的。
另外,拦截器也是Struts2框架中非常重要的组件之一。
拦截器可以在Action执行之前或之后进行一些预处理或后处理操作,比如日志记录、权限验证、异常处理等。
通过配置拦截器栈,我们可以对请求进行统一的处理,提高代码的复用性和可维护性。
除了以上提到的组件和机制,Struts2还提供了丰富的标签库和插件,用于简化开发工作。
标签库可以帮助开发人员快速构建用户界面,而插件则可以扩展框架的功能,满足不同项目的需求。
总的来说,Struts2框架的工作原理可以概括为,前端控制器接收用户请求,将请求分发给相应的Action,Action处理业务逻辑并返回结果,DispatcherServlet将结果渲染到用户界面上。
struts2 eclipse入门开发 helloworld
struts2 eclipse入门开发helloworld今天写篇关于struts2入门的文章吧,如有不妥或不对之处,请于/bbs/index.asp?boardid=2留言回复,我会尽快改正的,该文章主要参考struts2官方入门文档,原文请参看/2.x/docs/bootstrap.html,我的系列文章会对原文做适当增改,以我这样的一个初学者的角度行文,那么还是照老规矩,我们的struts2旅程从Hello World开始吧!首先简要介绍下我使用的开发环境吧:Eclipse3.3 IDE For Java EE Developers下载地址:/downloads/,JDK5或以上版本,Struts2.0.9(呵呵,在我写作的同时Struts2.0.11已经发布,下载地址/download.cgi#struts206)将下载的struts-2.0.11-all.zip解压将struts2开发所必需的jar包加入你的classpath(在Eclipse wtp项目结构下拷贝到WebContent/WEB-INF/lib目录下即可),我的做法是在Eclipse 下创建了一个struts库如图所示:struts2-core.jar Struts2的核心api,也是我们以后打交道最多的 xwork.jar Struts2(同Webwork一样)建立在XWork 2库的基础上 ognl.jar Object Graph Navigation Language (OGNL), 类似于jsp2.0中EL表达式的一门用于访问对象的表达式语言 freemarker.jar Struts2所有的ui标记的模板均使用freemarker编写,freemarker根据struts2 ui标记的模板渲染,可通过修改或重写模板使struts2的ui标记按你的要求渲染 commons-logging.jar 封装了通用的日志接口(在Log4J or JDK 1.4+日志api的基础上) 。
Struts2学习笔记
struts2学习笔记Struts2 框架第一天今天重点内容: 1、什么是Struts2框架?框架特性分析 2、 struts2 快速入门(分析struts2 运行原理) 3、 struts2 常用配置 4、如何访问Struts2 Action (Servlet) 5、 Struts2 结果集使用(响应跳转/ajax) 1. Struts2 框架概述1.1. 什么是struts2Struts2 框架问题:什么是框架?为什么要学习框架?框架是一些已经写好代码,通常和具体业务无关(可以看成:软件的半成品)学习框架,提高开发效率,简化开发(应用框架,实现代码代码开发实现开发标准化) javaEE三层结构在web阶段 DAO模式符合JAVAEE三层结构的三层结构出自 JavaEE规范(体系结构图)? 表现层? 业务层? 持久层/集成层Struts2 是一个表现层框架(简化表现层代码开发)分层开发:代码结构更加清晰,为了更好维护和扩展1.2. struts2 由来由两个框架优点合并后发展而来(struts1 + webwork)历史由来: Java兴起 98年(最早进行java开发分方向 j2se 、j2ee、 j2me ) J2EE 企业级应用软件开发2000 年左右出现struts1 (几乎所有开发人员都在用)随着互联网的发展struts1设计慢慢开始存有缺陷和不足 Webwork框架的出现该框架的设计思想比struts1 先进的多,例如:引入拦截器机制、 ognl 表达式语言 Apache 推出struts2 框架,特点: 开发流程类似struts1 ,内部结构类似webwork (struts2 和 webwork 源自xwork 命令模式框架)1.3. struts2 开发包结构使用框架,导入jar包课程使用 struts-2.3.15.3-all.zip 版本学习apps 使用demo (方便后期快速导入jar包和配置文件)开发中war重命名成zip包解压找到里面的13个核心jar包 doc 文档(学习struts2的官方官方规范文档) lib 开发struts2 需要的所有jar包 src 源代码开发struts2 没必要导入 lib下 128个jar包(去struts2_blank.war下方找struts2 最基本jar)将war包改为zip 扩展名,解压缩回顾jar记忆: 核心struts2-core-3.15.3.jar+ xwork-core+ognl (3) 上传(2jar) 日志: 2 jar 字符串 lang 1asm.* 3 jar 处理字节码信息 javassist.jar 1 代理相关 freemarker 1 jar 图形模板引擎开发strutrs2 基包导入web 工程!感谢您的阅读,祝您生活愉快。
Hello_Struts2_——Struts2_的配置和第一个Struts2小程序
Hello Struts2 ——Struts2 的配置和第一个Struts2小程序传说中神奇的Struts2在这里就要和大家见面了,在这里他会和大家打个招呼。
在这里你可以看到Struts2的一些基本特性和Struts2 程序的基本编写及编写步骤。
我的环境首先简单介绍一下我的环境,因为很多情况下您和我的环境不太一样,可能导致在页面显示上和运行过程中产生的现象不一致。
OS:Windows XP SP3JRE:1.6.0_03Struts2:2.2.1Eclipse:3.6Web Container:T omcat 6.0后面的文章将不再重复叙述。
安装Struts2和安装要求Struts2 2.2.1要求Servlet API 2.4 或者更高,JSP 2.0 或更高,Java5或更高。
Struts 要求信息记录在docs下的how-to-create-a-struts-2-web-application.html希望能引起大家的注意。
由于Struts2主要支持Java5,但现在市面上有些公司还在使用Java1.4,因此Struts2的设计者提供了这两个版本Java互相支持的转化工具和事例项目,大家需要的可以在Struts2的backport文件夹下找到。
满足了以上要求现在就可以安装Struts2了,首先现在Eclipse中new 一个Dynamic Web Project,然后配置好Web容器(这里就是指T omcat了),最后新建一个JSP页面T est.jsp。
这里新建JSP的目的就是要测试一下我们现在搭建的程序最初是否可行,当然这里一般是没有问题的,就是为了避免和以后的问题混淆,到后面一般不会怀疑这个环节出问题,最后导致浪费时间,所以一定要避免。
下面就到了真正部署Struts2的环节:Stept 1:把Struts2 Framework所必要的Jar包添加到WEB-INF\lib下,在Struts2 2.2.1中有下列必要Jar包:Commons-fileupload-1.2.1.jarCommons-io-1.3.2.jarFreemarker-2.3.16.jarJavassist-3.7.ga.jarOgnl-3.0.jarStruts2-core-2.2.1.jarXwork-core-2.2.1.jar这里要说一下必要Jar包的部署,在Struts2的官方文档中会说明该版本必要的Jar 包,在Struts2 2.2.1的版本中说明文档在.create-struts-2-web-application-with-artifacts-in-web-inf-lib-and-use-ant-to-build-the-application.html中记录(这名称比较长),在Struts2的各个版本中必要Jar包并不是固定的,这一点就要求大家要读文档了。
struts2注解方式的验证
struts2注解⽅式的验证struts2的验证分为分编程式验证、声明式验证、注解式验证。
因现在的⼈越来越懒,都追求零配置,所以本⽂介绍下注解式验证。
⼀.hello world参考javaeye的这篇⽂章,按着做⼀次,起码有个初步印象Validation使⽤名字叫做validator的Intercepter,在默认情况下,struts2已经定义了这个Intercepter,我们在不加声明的情况下就可以使⽤Validation了如果是使⽤默认的拦截器,就已经开启了验证框架的了,直接⽤。
开启验证的⽅式是(官⽹):打开验证默认拦截器堆栈“defaultStack”已经打开验证。
在创建⾃⼰的拦截器堆栈⼀定要包括两对validation和workflow拦截器。
来⾃struts-default.xml:<interceptor-stack name="defaultStack">...<interceptor-ref name="validation"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref><interceptor-ref name="workflow"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref></interceptor-stack>从版本2.0.4开始,Struts为XWork的com.opensymphony.xwork2.validator.ValidationInterceptor拦截器提供了扩展。
Java企业级应用开发课程教学大纲
J a v a企业级应用开发课程教学大纲一、课程简介本课程是高等院校工科软件工程专业的一门重要专业基础课,系统地介绍了使用Struts2框架进行网站开发的过程,具体包括:Struts2概述、Struts2入门、Struts2核心剖析、国际化、拦截器、类型转换器、输入校验、文件的上传下载。
通过本课程的教学,使学生掌握Struts2的工作原理,会用Struts2进行动态网站的开发。
掌握Struts2国际化、拦截器、校验器的用法。
掌握Struts2中文件上传、下载的方法;培养学生应用Struts2解决和处理实际问题的思维方法与基本能力。
二、课程目标(一)课程具体目标1. 能够按照设计方案要求进行计算机软件实现;2. 能够按照要求进行计算机软件开发项目的测试和评价;3. 能够针对计算机软件开发的需要选择和使用适当的平台环境和开发工具,并能够理解其局限性。
(二)课程目标与专业毕业要求的关系表1 本课程对专业毕业要求及其指标点的支撑(三)课程对解决复杂工程问题能力的培养在课程理论知识讲授环节,不但注重培养学生对Struts2基本原理的深入理解,使学生掌握解决开发网站领域复杂工程问题所需的基本理论以及了解相关技术对社会等的影响,而且跟踪行业发展前沿,探讨当前热点问题激发学生的学习兴趣。
并通过适当的课后作业锻炼和检验学生解决复杂工程问题的能力。
在实验教学环节,以培养学生解决复杂工程问题的能力为目标,围绕课程支撑的课程目标安排实验项目,设计实验内容,明确实验要求,指导实验实施,严格实验成果考核。
在课程考核环节,根据课程支撑的课程目标选择合适的考核方式,考题设置完全覆盖课程目标,考题设计应充分考虑学生解决复杂工程问题所需知识和能力。
总之,本课程的教学通过在理论讲授、课后作业、课内实验、课程考核等环节充分贯彻培养学生解决复杂工程问题能力的理念和要求,实现本课程课程目标的达成。
三、教学内容及基本要求(一)理论教学第1单元Struts2概述(1学时)1.教学内容(1)MVC介绍。
实战struts2_Hello World
内容提要:本文以一个“Hello World”的简单Demo,开始struts2之旅。
开发环境:myeclipse5.0+eclipse3.2+jdk5.0+tomcat5.5+struts2+junit3.8项目目录结构:其中lib目录中,包含struts2相关的jar文件。
本项目中,为简单起见,选用了struts-2.0.1\lib中的所有jar文件(注意:不需要包含struts2-all-2.0.1.jar)。
项目文件:1. Action类com.cleversoft.struts2.demo.HelloWorld.java:package com.cleversoft.struts2.demo;import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport {private static final long serialVersionUID = -758686623642845372L;public static final String MESSAGE = "Hello, Struts2!";public String execute() throws Exception {setMessage(MESSAGE);return SUCCESS; }private String message;public void setMessage(String message) {this.message = message; }public String getMessage() {return message; }}2. View页面HelloWorld.jsp:<%@ taglib prefix="s" uri="/struts-tags"%><html><head><title>Hello World!</title></head><body><h2><s:property value="message"/></h2></body></html>3. 配置Actionstruts.xml:<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="com.cleversoft.struts2.demo" extends="struts-default"><action name="HelloWorld" class="com.cleversoft.struts2.demo.HelloWorld"><result>/HelloWorld.jsp</result></action><!-- Add your actions here --></package></struts>struts.properties(可选):struts.devMode = truestruts.enable.DynamicMethodInvocation = false4. web配置web.xml:<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "htt p:///dtd/web-app_2_3.dtd"><web-app><display-name>Struts 2.0 Demo</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list></web-app>5. 测试类com.cleversoft.struts2.test.HelloWorldTest.java:package com.cleversoft.struts2.test;import junit.framework.TestCase;import com.opensymphony.xwork2.ActionSupport;import com.cleversoft.struts2.demo.*;public class HelloWorldTest extends TestCase {public void testHelloWorld() throws Exception {HelloWorld hello_world = new HelloWorld();String result = hello_world.execute();assertTrue("Expected a success result!", ActionSupport.SUCCESS.equals(result));assertTrue("Expected the default message!", HelloWorld.MESSAGE.equals(hello_world.getMessage()));}}6. 其他index.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>index.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=GB18030"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>This is Struts 2.0 Demo page. <br></body></html>7. 运行访问http://localhost:8080/struts2/HelloWorld.action运行结果:。
MyEclipse开发Struts2过程
MyEclipse开发Struts2过程Struts2是Struts1.x的升级换代产品,但是并没有继承Struts1.x的思想和操作模式,而是一个完全不同的实现方式,所以即使学会了Struts1.x还是得从头学习Struts2,但是当你学会了Struts2后会发现这个产品对编程及配置有了很大的简化,使得程序员将更多的精力集中到业务逻辑编程方面,下面就在MyEclipse8.5M1平台下如何开发基于Struts2的Web应用系统的MVC模式中的VC部分作以简要的描述,M部分还是可以采用其他框架实现,例如Spring+Hibernate等。
(一)创建基于Struts2的Web项目从MyEclipse的菜单中一次选择File\New\Web Project,在弹窗中填写该项目的名称信息,并且选择J2EE的版本,如图:(二)添加Struts2支持将鼠标定位到Package Explorer视窗的该项目名称上,单击右键,在弹出的菜单上依次选择MyEclipse\Add Struts Capabilities,在弹窗中选择Struts的版本为Struts2.x,单击“Next”按钮进入下一个窗口,选择要加入的支持类库,库的选择视项目需求而定,可以在后续开发过程中陆续加入,这里只选择Struts2 Core Libraries。
完成这些操作后发现系统在src目录下添加了一个配置文件struts.xml,这个文件就是Struts2的核心配置文件,后续的操作都在此文件中进行。
(三)编写JSP页面代码这里注意尽量使用Struts2的标签来编写JSP代码,所以要在页面代码开始部分引入标签库,即添加该行代码<%@ taglib prefix="html" uri="/struts-tags"%>,MyEclipse8.5M1目前还不支持基于Struts2的JSP模板,所以在新建JSP页面代码的时候,先选择基于Struts1.x模板,然后再手动修改,也就是把该页面代码中引入Struts1.x的标签库换成上面提到的Struts2的标签库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012-08-23 21:57:19
《研磨struts2》第二章Struts2的HelloWorld 之概述
浏览(8956)|评论(1) 交流分类:Java|笔记分类: 研磨struts2
2.1 概述
2.1.1 功能概述
通过上一章的讲述,明白了Struts2是什么,有什么以及能干什么,接下来就该来讨论怎么做的问题了,也就是讨论如何使用Struts2来开发基于MVC的web应用。
按照惯例,学习一个新的东西,都是从HelloWorld起步的,这里也不例外,本章就一起来看一个Struts2的HelloWorld实现。
本章会从搭建Struts2的开发环境开始,用Struts2来开发一个简单的HelloWorld,以便大家熟悉一下Struts2的基本开发方式以及各部分的写法。
在HelloWorld中,不去实现复杂的业务逻辑,只做一个简单的登录功能。
提供一个登录页面,让用户输入用户名和密码然后提交请求;在动作Action里面取得登录页面输入的数据,然后模拟业务层处理登录请求并返回简单的信息,最后跳转到欢迎页面,在欢迎页面上输出这个登录的帐号信息。
2.2 准备开发环境和运行环境
要开始Struts2的开发,需要先准备struts2的开发环境和运行环境。
Struts2的开发环境直接选用Eclipse,而运行环境就选用最常见的Tomcat,下面分别介绍一下。
2.2.1 配置JDK
使用Eclipse来开发自然需要使用JDK,JDK的下载和安装这里就不去赘述了,直接配置需要的环境变量,主要是JAVA_HOME和path。
例如本书示例所用的环境,把JDK安装在E:\Struts2\jdk\jdk1.6。
安装之后要设置环境变量,在桌面上右击【我的电脑】->【属性】->【高级】->【环境变量】中设置java所需要的环境变量。
设置JAVA_HOME,变量值为jdk的安装目录,如下图。
图2.1 环境变量JAVA_HOME设置
设置path,变量值为jdk的安装目录下的bin文件夹($JAVA_HOME/bin),如下图。
2.2.2 下载并安装Eclipse
Eclipse版本繁多,这里推荐使用eclipse-jee-europa,本身是免费的,而且功能也很强大。
至于有些朋友习惯使用MyEclipse,由于MyEclipse是商业的收费软件,这里就不推荐使用了。
eclipse-jee-europa是eclipse官方提供的JEE开发环境,以eclipse3.3为基础,加上了IBM官方的web开发工具WTP等。
可以直接到eclipse的官网http://ww 去下载最新的版本。
也可以直接到以下链接地址去下载:http://www.ecl /downloads/download.php?file=/technology/epp/downloads/release/e uropa/winter/eclipse-jee-europa-winter-win32.zip。
Eclipse本身是绿色的,直接解压即可。
比如写作本书所用的Eclipse的解压路径为E: \Struts2\ide\eclipse-jee-europa-winter-win32。
解压后,直接双击里面的eclipse.exe即可打开Eclipse,会看到如下的欢迎页面。
图2.3 eclipse-jee-europa的欢迎页面关闭欢迎页面,会看到Java EE透视图的默认布局,如下图。
图2.4 Java EE透视图的默认布局
可以按照自己的习惯重新布置各个视图,如下图,以后在讲解中就使用如下的视图布局。
图2.5 按照自己的习惯设置视图的布局
∙把Outline视图放到工作台的左下角。
∙把Servers视图放到工作台的左下角。
∙从【Window】->【Show View】中找到Package Explorer,放到工作台的左上角。
∙关闭Project Explorer视图。
∙关闭Data Source Explorer视图。
∙关闭Snippets视图。
∙从【Window】->【Show View】中找到Console,放到工作台的右下角
∙ 2.2.3 下载Tomcat并在Eclipse里面引用Tomcat
访问tomcat的官网,会看到tomcat已经更新到7.0了,但是为了方便与eclipse-jee-europa连起来使用,下载tomcat6.
0就可以了。
当然也可以自己选择合适的版本下载,下面是无需安装的Tomcat6的下载连接:/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29-windows-x86.zip。
前面下载的Tomcat无需要安装,直接解压即可使用。
当然,如果需要把To mcat安装为windows服务,那就需要下载安装的版本。
这里直接把压缩包解压即可,比如本书示例所用的环境:解压在E:\Struts2\server\apache-tomcat-6.0.
29。
现在来让eclipse引用刚刚下载的tomcat6.0。
在eclipse上面的菜单条上找到【Window】首选项,选择【Window】->【Prefernces】->【Server】->【Installed Runtimes】,会得到如下图的界面。
图2.6 安装服务器页面
点击Add,会转向服务器选择页面。
图2.7 服务器选择页面
选择tomcat6.0,点击Next,会跳转到Tomcat安装路径选择页面。
图2.8 tomcat6.0安装路径选择页面
点击Browse,会弹出文件夹选择页面,选择在本节中tomcat的安装路径(前面安装在E: \Struts2\server\apache-tomcat-6.0.29)。
然后依次点击图2.8的Finish和图2.6的OK,就完成了在Eclipse中引用Tomcat。
2.2.4 下载Struts2以及认识Struts2包结构
到Struts2的官网下载Struts2的最新版本2.1.8的all-in-one包,也可以直接使用下面的下载地址/apache-mirror/str uts/binaries/struts-2.1.8.1-all.zip。
直接解压下载得到的压缩包,可以得到如下的文件夹结构。
图2.9 Struts2 all-in-one包结构
解压后文件夹的根目录下(struts-2.1.8.1)下都是一些LICENSE文件。
∙src目录中是Struts2的源代码
∙lib目录中是Struts2的jar包和struts2依赖的jar包。
∙docs目录中是Struts2的官方文档,虽然是英文的,但是很多最新最准确的知识都能从这个官方文档里得到。
∙apps目录中有5个war文件,是Struts2的官方示例,里面是完整的可以运行的web应用。
到这里,基本的准备工作就做好了。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【/forum/blogPost/list/0/4011.html】
欢迎访问获取更多内容。