文档库 最新最全的文档下载
当前位置:文档库 › Struts2学习

Struts2学习

安装与设置

1.解压struts

2.

3.1.2,假设解压后位于d:\struts2目录

2.安装MyEclipse,任何版本都可以

3.假设你已经安装好jdk和tomcat了,如d:\tomcat

HelloWorld

1.建立项目

a)打开eclipse

b)新建项目

c)选择myeclipse-java enterprise projects-web project

d)项目名称:s2_0100_introduction

e)选择java ee 5.0

2.设定server

a)window – preferences – myeclipse – servers – tomcat – 6.x

b)选择tomcat home directory

c)选择enable

d)finish

3.设定jdk环境

a)window – preferences – java – installed jres

b)如果没有对应的JDK(不是JRE),选择add

c)选择standard VM -> next

d)选择JDK对应的Directory

e)将刚刚设定的JDK设为默认

4.建立第一个struts2.3的程序

a)找到struts目录下对应的apps目录

b)解压struts2-blank-2.3.1.2.war

c)Copy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中

commons-io的jar包会在文件上传和下载时需要,其他为必须

d)Copy对应的struts.xml到src目录,在package explorer视图进行操作

e)注释掉struts.xml的多余内容

f)建立Hellos2_1.jsp文件

g)*修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为

Chinese,National Standard

h)在struts.xml中照原配置进行对应的配置

i)修改对应的web.xml,建立struts2的filter(参考struts自带的项目)

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn dExecuteFilter

struts2

/*

5.运行项目

a)可以首先部署到tomcat上项目

b)也可以项目右键debug as – myeclipse server app,选择刚刚建立好的server

6.其他

a)学习建立struts的dev-mode,好处在于我们修改了配置文件的时候能够自动热替

b)建立jar文件对应的源码D:/share/tools/struts-2.3.1.2/src/core/src/main/java,以及

xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的

user-library)

c)浏览struts的目录

d)认识eclipse jee的项目部署目录,认识如何修改webapp的context-root,项目copy

改名后可能会出现的问题

e)package explorer –建立jar的源文件和目标关联,navigator –观察所有的内容

f)认识Action的后缀名,在struts2默认中,带不带action都可以

struts.xml常量配置:

Internationalizetion(国际化) i18n

struts.i18n.encoding=UTF-8 WEB应用默认编码集

struts.action.extension=action,, action扩展名

struts.devMode = false 是否开发模式

struts.i18n.reload=false

struts.configuration.xml.reload=false

struts.ognl.allowStaticMethodAccess=false

struts.custom.i18n.resources=testmessages,testmessages2

struts.enable.DynamicMethodInvocation = true

struts.mapper.alwaysSelectFullNamespace=false

struts.serve.static.browserCache=true

常见问题:

1.struts.xml不自动提示

a)window – preferences –搜索catalog – add

b)选择key type为URI

c)key: https://www.wendangku.net/doc/cd7062417.html,/dtds/struts-2.0.dtd

d)location: 对应的dtd文件,位于struts-core包中,解压开,指定相应位置,如:

struts-2.3.1.2\lib\struts2-core-2.3.1.2\struts-2.0.dtd

2.导入示例项目

a)注意JDK的版本,应该是JDK6,否则会出class version的问题

b)如果总是项目出问题,可以重建项目,单独拷文件

c)还有一种情况是项目右键,properties – java – compiler 选择6.0

d)另外,在tomcat配置中也要使用jdk6

3.devMode设为true就会出问题空指针问题

a)tomcat路径带了空格

b)

Action

1.实现一个Action的最常用方式:

a)普通类POJO

b)Action接口

c)ActionSupport继承

2.DMI动态方法调用!

http://localhost:8888/Struts2-02/

namespace/login!lisiexecute.action

黄色:

绿色(必须的):

蓝色:

紫色:

?user=zhangsan&pwd=123

3.Method属性

4.通配符配置* {1} {2} …

a)*_*

5.默认action处理

Result

1.常用四种类型:

a)dispatcher(默认,与JSP整合的类型)

b)redirect(直接跳转到的其他URL的类型)

c)chain(action链式处理结果类型)

d)redirectAction(直接跳转到其他action)

2.全局结果集

a)global-results | extends

3.动态结果(了解)

a)在action中保存一个属性,存储具体的结果location

4.传递参数

a)客户端跳转才需要传递

b)${}表达式(不是EL)

c)

6.接收参数的方法(一般用属性或者DomainModel来接收)

7.简单参数验证addFieldError

a)一般不使用Struts2的UI标签

8.访问Web元素

a)Map类型

i.IoC()

RequestAware,SessionAware,ApplicationAware

ii.依赖Struts2

ActionContext.getContext().getSession().put("user",

user.getName());//取得map的session

ActionContext.getContext().getApplication();//取

得map的Application

b)原始类型

i.IoC

implements ServletContextAware,ServletRequestAware ii.依赖Struts2

ServletActionContext.getResponse().addCookie(null);

9.包含文件配置

OGNL

1.Object Graph Navigation Language

2.想初始化domain model,可以自己new,也可以传参数值,但这时候需要保持参数为

空的构造方法

3.其他参考ognl.jsp

4.什么时候在stack中会有两个Action?chain

Struts-Tags

1.通用标签:

a)property

b)set

i.默认为action scope,会将值放入request和ActionContext中

ii.page、request、session、application

c)bean

d)include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)

e)param

f)debug

2.控制标签

a)if elseif else

b)iterator

i.collections map enumeration iterator array

c)subset

3.UI标签

a)theme

i.simple xhtml(默认) css_xhtml ajax

4.$ # %的区别

a)$用于i18n和struts配置文件

b)#取得ActionContext的值

c)%将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用

i.参考

作业

1.读doc文档:struts-tags

2.设计约定(编码规定)

a)原则:简单就是美

b)库名:项目名

c)表的命名:_Model名

d)字段:保持和属性名一致(尽量不要起名和数据库命名冲突)

e)用层来划分包action model(bean) service dto(vo)

f)Action XXXXAction

g)*-*

h)/

i)/admin

j)package “action” adminAction

项目开发顺序

1.建立界面原型

2.建立Struts.xml

a)确定namespace

b)确定package

c)确定Action的名称,空的方法

d)确定Result

e)将界面原型页面进行修改,匹配现有设置

f)测试

g)做好规划!!!!!

3.建立数据库(或者实体类)

4.建立Model层

5.建立Service层(后面讲了Hibernate后再完善)

a)此时可以使用JUnit进行单元测试了

6.着手开发

声明式异常处理

1.在Actoin中进行异常映射

2.在package中进行全局异常映射

3.使用继承共用异常映射

4.Struts2中异常处理由拦截器实现(观察struts-default.xml)

a)实际上Struts2的大多数功能都由拦截器实现

I18N

1.I18N原理

a)ResourceBundle和Locale的概念

b)资源文件

c)native2ascii

2.Struts的资源文件

a)Action – Package – App级

b)一般只用APP

i.struts.xml custom.i18n

c)PropertiesEditor插件

i.解压

ii.features plugin 覆盖到myeclipse中的eclipse目录里

d)动态语言切换

i.request_locale=en_US zh_CN

Struts拦截器以及源码解析

1.Struts架构图

a)见文档

2.Struts执行过程分析

3.Interceptor拦截器过程模拟

4.定义自己的拦截器

a)acegi – spring security

5.使用token拦截器控制重复提交(很少用)

6.类型转换

a)默认转换

i.日期处理

b)写自己的转换器:

public class MyPointConverter extends DefaultTypeConverter{ @Override

public Object convertValue(Object value, Class toType) { if(toType == Point.class) {

Point p = new Point();

String[] strs = (String[])value;

String[] xy = strs[0].split(",");

p.x = Integer.parseInt(xy[0]);

p.y = Integer.parseInt(xy[1]);

return p;

}

if(toType == String.class) {

return value.toString();

}

return super.convertValue(value, toType);

}

}

public class MyPointConverter extends StrutsTypeConverter{ @Override

public Object convertFromString(Map context, String[] values, Class toClass) {

Point p = new Point();

String[] strs = (String[])values;

String[] xy = strs[0].split(",");

p.x = Integer.parseInt(xy[0]);

p.y = Integer.parseInt(xy[1]);

return p;

}

@Override

public String convertToString(Map context, Object o) {

// TODO Auto-generated method stub

return o.toString();

}

}

c)三种注册方式:

i.局部:XXXAction-conversion.properties

1.p(属性名称) = converter

ii.全局:xwork-conversion.properties

https://www.wendangku.net/doc/cd7062417.html,.xxx.XXX(类名)= converter

d)如果遇到非常麻烦的映射转换

i.request.setAttribute();

ii.session

1.验证框架

2.UI标签

3.类型转换中的异常处理

4.

5.

6.

7.

8.上传与下载文件

Struts2总结

1.Action

a)namespace(掌握)

b)path(掌握)

c)DMI(掌握)

d)wildcard(掌握)

e)接收参数(掌握前两种)

f)访问request等(掌握Map IOC方式)

g)简单数据验证(掌握addFieldError和

2.Result

a)结果类型(掌握四种,重点两种)

b)全局结果(掌握)

c)动态结果(了解)

3.OGNL表达式(精通)

a)# % $

4.Struts标签

a)掌握常用的

5.声明式异常处理(了解)

6.I18N(了解)

7.CRUD的过程(最重要是设计与规划)(精通)

8.Interceptor的原理(掌握)

9.类型转换(掌握默认,了解自定义)

Struts2框架工作原理及应用体会

2012年第11卷第6期 产业与科技论坛2012.(11).6 Industrial &Science Tribune Struts2框架工作原理及应用体会 □宋 君 张家爱 【摘要】通过针对特定用户的分析,搭建以Struts2为技术核心的旅行社管理系统。本文简单的介绍了MVC 、 Struts2的工作原理,同时总结了在项目制作过程中所得到的心得。 【关键词】 Struts2;MVC ;FilterDispatcher ;Action 【基金项目】本文为大学生科技创新院级基金项目(编号:2011070)成果 【作者单位】宋君,吉林农业科技学院信息工程学院;张家爱,吉林农业科技学院信息工程学院教师 本着锻炼自我与积极参与到实用性技术的目标,以发掘自身创新意识为前提。利用空闲时间,在老师的指导下,进行了一次大学生创新项目的实践性活动。本着实用原则,以某中小旅行社为客户(根据用户需求,匿名),以Struts2框架为基点,进行了一次旅行社管理系统的开发。在项目结束之余, 特将在项目过程中经历的种种认识进行了简单的总结,希望让阅读本文的朋友们,更多的参与到此类活动中。 一、基础思想— ——MVC 简述作为时下经典框架之一, MVC 具有其独特的价值。MVC 框架简单的说,就是将数据模型与用户视图进行分离。通过控制器进行协调处理的一种结构是框架。同时,也是本文中要讨论的Sturts2框架的基础思想。 M 是指模型层(Model ),V 是指用户视图(View ),C 则是指控制器 (Controller )。这种划分方式是以将模型层与视图层进行代码分离,从而降低两者之间的耦合性,使同一程序可以使用不同形式进行表现。不同层之间的修改不会或尽量少的印象到其他层功能的史前为前提。有效的提高的代码的维护性和设计难度。 图1 二、 Struts2工作原理(一)Struts2框架组成。Struts2框架由三个主要部分组成:核心控制器、业务控制器,以及由用户实现的业务逻辑组件。这里我们将侧重于核心控制器与业务控制器的理解与说明。 (二)核心控制器:FilterDispatcher 。FilterDispatcher 是Struts2框架的核心控制器,在此,我们可以将FilterDispatcher 看作一个类似于过滤网的过滤器。当用户发出请求,并到达Web 硬哟那种时,该过滤器会过滤用户请求。如果用户请求的结尾为action ,则将该请求转入Struts2框架进行处理。当Struts2框架获得了*.actio 请求后,会根据请求前面“*”的那部分内容,决定调用哪个业务逻辑组件作为响应单位。这里需要说明的是Struts2用来处理用户请求的Action 实例并不是业务控制器,而是作为Action 的代理———正因为Struts2的一大特点,与Servlet API 的非耦合性,使得用户实现的业务控制器无法直接处理用户请求。有效的提高了后期调试维护的效率。而Struts2框架再次提供了了一系列的拦截器。这些拦截器负责将HttpServletRequest 请求的参数解析出来,传入Action 中,并毁掉Action 的Execute 方法来处理用户请求。用户实现的Action 类仅作为Struts2的Action 代理的代理目标。用户实现的业务控制器则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest 对象中,而用户的Action 类无需访问HttpServletRequest 对象。拦截器负责将HttpServletRequest 里的请求数据解析出来,并传给业务逻辑组件Action 实例。 (三)业务控制器。业务控制器就是前文提到的用来实现用户Action 的实力,这里的每个Action 类通常包含有一个execute 方法,当业务控制器处理完用户的请求后,该方法将会针对此次处理返回一个字符串— ——该字符串就是一个逻辑树图名。当程序开发人员开发出系统所需要的业务控制器后,还需要针对性的配置Struts2的Action ,即需要配置Ac- tion 的以下三个部分:(1)Action 所处理的URl 。(2)Action 组件所对应的实现类。(3)Action 里包含的逻辑试图和物理资源之间的对应关系。每个Action 都要处理一个用户请求,而用户请求则总是包含有指定的URL 。当核心控制器过滤用户请求,并调用后,根据请求的URL 和Action 处理URL 之间的对应关系来处理转发。 · 342·

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@https://www.wendangku.net/doc/cd7062417.html,。 在介绍常用标志前,我想先从总体上,对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" %> Condition Flow

Condition Flow

" /> Max's file here Scott's file here

Java多方式实现文件上传

在Struts 2中实现文件上传 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题,所以今天我们就来讨论一下这个问题。 实现原理 Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。 具体实现 前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts 作为框架的。以下是例子所依赖类包的列表: 清单1 依赖类包的列表 首先,创建文件上传页面FileUpload.jsp,内容如下: <% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncodi ng = " utf-8 " %> <% @ taglib prefix = " s " uri = " /struts-tags " %> Struts 2 File Upload

Strurts2

阐述struts2的执行流程。 Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action 和用户实现的企业业务逻辑组件。 核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理 机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2 是WebWork的升级版本。 基本简要流程如下: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被FilterDispatcher接收。 3、根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到 相应页面。 6、返回HTTP响应到客户端浏览器。 工作原理 在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否 需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类 6 ActionProxy创建一个ActionInvocation的实例。 7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP

Struts2学习笔记

Struts2项目的构建与配置 1.配置struts.xml (1)配置struts.xml可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的 参考项目的struts.xml文件。 (2)主要的配置如下: /hello.jsp value="true"表示是开发模式,当修改了配置时服务器会自动加载修改后的配置,不需要中期服务器,方便开发。 (3)namespace="/"与浏览器的访问地址有关,namespace的默认值为空。 (4)/hello.jsp action的name值与浏览器的访 问地址有关,当地址是“http://…/hello”时,浏览器就会返回result中的hello.jsp 的页面。 2.配置web.xml (1)配置web.xml也可以参考下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的 参考项目的web.xml文件 (2)主要配置如下: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 3.配置Struts2的jar包 (1)复制下载的struts-2.3.14.1-all.zip解压后的apps文件夹下的参考项目的 WEB-INF\lib文件夹下的所有的jar包到我们自己项目的WEB-INF\lib文件夹下即可。 Struts.xml的配置 1.package的属性与配置 (1)package的使用说明:类似于Java程序里的package,主要用于区分同名的action。在真 正的项目开发中package通常来区分不同的模块。例如: (2)name属性:用于区分不同的package,此属性不能省略不写。 (3)extends属性:用于继承其他的package,继承了某个package就包含了某个package里 的所有配置,此属性可以省略不写,默认继承struts-default。 (4)namespace属性:表示浏览器访问的路径,此属性可以省略不写,默认为空,当此属性 为空时,该package里的action可以匹配浏览的任何请求的action。 (5)abstract属性:此属性的值为false表示此package非抽象的,若为true表示此package

strusts2课堂总结

一、 1、struts2 struts2是mvc设计思想的一个实现,可以将项目低耦合,提高扩展性 2、struts2和struts1的区别 struts2不是struts1的升级,而是继承的下xwork的血统,它吸收了struts1和webwork 的优势。 struts2的action是原型,安全的,struts2的action是单例,非安全 3、步骤: 1、导入包 2、在web.xml文件中,加入struts2的核心拦截器 3、在src下放入struts2的xml struts.xml 4、url http://localhost:8080/Struts2_01_HelloWorld/demo/hello.action 二、 1、默认值 2、转发和重定向的区别 转发:url显示的依然是上一个的url,共享上一次的请求 重定向:url显示的是下一个的url,不共享 3、url http://localhost:8080/Struts2_02_Default/demo/hello.action 4、路径 http://localhost:8080/Struts2_02_Default/demo/a/b/c/hello.action 1、原路径找不到,http://localhost:8080/Struts2_02_Default/demo/a/b/hello.action 2、如果1找不到,http://localhost:8080/Struts2_02_Default/demo/a/hello.action 3、如果2找不到,http://localhost:8080/Struts2_02_Default/demo/hello.action 3、如果3找不到,http://localhost:8080/Struts2_02_Default/hello.action 三、 11、自定义action

Struts2教程2:处理一个form多个submit

在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit 按钮,如下面的代码所示: 由于在

中的多个提交按钮都向一个action提交,使用Struts2 Action的execute 方法就无法判断用户点击了哪一个提交按钮。如果大家使用过Struts1.x就会知道在 Struts1.2.9之前的版本需要使用一个LookupDispatchAction动作来处理含有多个submit 的form。但使用LookupDispatchAction动作需要访问属性文件,还需要映射,比较麻烦。从Struts1.2.9开始,加入了一个Event DispatchAction动作。这个类可以通过java反射来调用通过request参数指定的动作(实际上只是判断某个请求参数是不存在,如果存在,就调用在action类中和这个参数同名的方法)。使用EventDispatchAction必须将submit的name 属性指定不同的值以区分每个submit。而在Struts2中将更容易实现这个功能。 当然,我们也可以模拟Event DispatchAction的方法通过request获得和处理参数信息。但这样比较麻烦。在Struts2中提供了另外一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法)。使用这种方式也需要通过请求参来来指定要执行的动作。请求参数名的格式为 action!method.action 注:由于Struts2只需要参数名,因此,参数值是什么都可以。 下面我就给出一个实例程序来演示如何处理有多个submit的form: 【第1步】实现主页面(more_submit.jsp)

struts2 实验报告

1.系统分析与设计 1.1 系统功能描述 本系统是个非常简单的注册、登录系统。本系统的实现是基于Struts2、Spring、Hibernate 三个框架,系统功能单一,业务逻辑简单。 当用户注册信用户时,就是向系统中增加一个新用户,对应的数据库增加一条记录。 当用户输入注册信息时,系统提供了基本的输入验证判断用户输入是否合法,只有当用户输入满足基本输入要求时,才会被提交到实际的登录系统,进行实际的登录处理。 系统还使用了随机产生的图形验证码来防止刷新,防止用户通过单击浏览器的书安心按钮来重复注册多个用户。 系统还提供了一种Ajax方式来验证用户输入的注册名是否有效,系统要求所有的用户名不能重复。故当用户输完用户名后,系统立即在页面上方提示用户该用户名是否可用,如果系统中没有该用户名,则系统提示该用户名可用;否则提示用户该用户名重复,用户必须重新选择用户名注册。 当用户注册一个新用户名之后,就可以使用系统的登录功能来登录系统了,用户输入登录用的用户名、密码后,系统一样提供了基本的输入校验。 除此之外,系统还采用了随机产生图形验证码来防止恶意用户的暴力破解,系统随机生成一个图形验证码,而用户登录必须输入图形验证码中显示的字符串,只有用户输入的字符串和系统随机生成的验证码字符相同时,系统才允许用户登录。 1.2 系统功能流程

1.3 数据库设计 相关的映射文件: 一旦提供了上面的映射文件,Hibernate 就可以理解User 和user_table 之间的对应关系。 2.系统实现与测试 2.1 系统采用的关键技术 MVC 框架采用了Struts2框架,Struts2框架的易用性,极好的简化了系统的MVC 层的实现;本系统使用了Struts2的JSON 插件来完成Ajax 功能,除此之外本系统为了避免进行底层的Ajax 交互,还是用了一个简单Prototype.js 函数库,用以简化Ajax 编程。Struts2框架的稳定性,为系统的稳定运行提供了保证。

尚学堂马士兵Struts2教学视频之Struts2学习笔记

目录 01 Struts2-Action (5) 一、Struts作用: (5) 二、搭建Struts2的运行环境: (5) 三、Namespace (6) 四、标签 (6) 五、Action (6) 六、路径问题的说明 (8) 七、Action的动态调用方法 (8) 八、Action通配符(wildcard)的配置 (9) 九、Action的属性接收参数 (10) 1、在Action添加成员属性接受参数 (10) 2、域模型(Domain Model) (10) 3、ModelDriven接收参数 (11) 十、Action属性接收参数中文问题 (12) 十一、简单数据验证 (12) 十二、访问Web元素 (14) 一、方法一:ActionContext方式 (15) 二、方式二:Ioc(控制反转)—推荐使用 (15) 三、方式三:获取原类型 (16) 四、方式四:获取原类型-控制反转 (17) 十三、Struts2配置文件模块化包含(include) (17) 十四、默认的Action (18) 十五、Action总结 (18) 02 Struts2-Result (19) 一、Result类型 (type) (19) 二、全局结果集(Globle Result) (20) 三、动态的结果集(dynamic result) (21) 四、带参数的结果集 (21) 五、Result总结 (22) 六、项目经理: (22) 03 OGNL表达式语言 (23) 04 Struts2-Tags (28) Struts2标签目录 (28) 一、property标签 (28) 二、set标签 (29) 三、bean标签 (29) 四、标签-少使用 (29) 五、If elseif else (30) 六、Iterator标签 (31) 七、Theme (31) 05设计约定(编码规定) (32) 06 项目开发顺序 (32) 07 声明式异常处理 (33) 08 国际化 (35)

struts2复习题(含答案)

Struts2复习题 1.以下属于struts2的控制器组件是: 2.以下属于struts2的体系结构的是:(多选) 控制器组件配置文件 3.以下属于struts2配置文件中的配置元素是:(多选) A. B. C. D. 4.关于struts1和struts2对比的说法正确的是: 要求Action类继承struts1框架中的Action父类,struts2中则不一定需要继承,可以是POJO 类 中的Action不是线程安全的,而struts2中的Action是线程安全的 和struts2中都使用ActionForm对象封装用户的请求数据 使用OGNL表达式语言来支持页面效果,struts2通过ValueStack技术使标签库访问值 5.以下关于ValueStack说法正确的是:(多选) A.每个Action对象实例拥有一个ValueStack对象 B.每个Action对象实例拥有多个ValueStack对象 中封装了需要传入下一个页面的值,这些值封装在ValueStack对象中 会在请求开始时被创建,请求结束时消亡 6.关于struts2配置文件说法正确的是: A.必须在WEB-INF/classes目录下 B.名字必须为 C.配置Action时,必须配置包信息 D.使用元素配置转发 7.在struts2配置中用()元素来配置常量: A. B. C. D. 8.关于struts2包的说法正确的是: 框架使用包来管理常量 框架定义包时必须指定name属性 框架中配置包时,必须继承自struts-default包,否则会报错 框架中使用包来管理Action 9.struts2中获取Servlet API的方法正确的是:(多选) A.使用ActionContext对象以解耦合的方法访问Servlet API B.使用ServletActionContext对象以解耦合的方式访问Servlet API C.使用ActionContext对象以耦合的方式访问Servlet API D.使用ServletActionContext对象以耦合的方式访问Servlet API 10.struts2动态调用的格式为: ! 11.如果要实现struts2的数据校验功能 A.普通Action类可以实现 B.继承自Action接口可以实现 C.继承自ActionSupport类可以实现 D.继承自ActionValidate类可以实现

尚学堂_马士兵 Java学习路线图_教学大纲_视频资源列表

尚学堂教学安排 第一部分学习总周期26天: 1. --j2se(chat + tank + snake)-----------------------13 days 2. --oracle--------------------------------- 4 days 3. --jsp+jdbc+mysql------------------------------- 1 days 4. --html+css+js--------------------------- 3 days 5. --html+css+js--------------------------- 3 days 6. --bbs----------------------------------- 2 days 第二部分学习总周期27天 7. --drp-----------------------------------12 days 8. --struts--------------------------------- 6 days 9. --hibernate-------------------------------- 6 days 10.--spring--------------------------------- 3 days 第三部分学习总周期26天 11.--uml----------------------------------- 2 days 12.--oa-----------------------------------15 days 13.--crm----------------------------------- 5 days 14.--ejb 3.0---------------------------------3 days 15.--bankproject(简介)---------------------------1 days 16.--面试技巧+3g+j2me(简介)-------------------------1 days 第四部分linux学习总周期4天 教学视频资源列表 q、jshtmlcss 这是基础 l、尚学堂科技_马士兵_轻松愉快linux视频教程 n、oracle.马士兵 r、mysql_avi.马士兵 这些单独的数据库和系统模块可以在任何时候都可以,建议在学j2ee之前学 j、尚学堂马士兵视频教程_scm_cvs_svn cvs是存档工具,建议在学j2ee当中学习 p、junit4 这个是测试工具,建议在学j2ee中学习 s、设计模式.马士兵

Struts2的介绍及总结

Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。 Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。 线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。 Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。 可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。 捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。Action属性能够通过web页面上的taglibs访问。 表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。Struts2不仅支持JSTL, Struts2 还可使用OGNL进行类型转换。提供基本和常用对象的转换器。 校验:Struts2支持通过validate方法和XWork校验框架来进行校验。XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

02-Struts2的工作流程及配置文件

Struts2的工作流程及配置文件--- https://www.wendangku.net/doc/cd7062417.html, --- Struts2.0的流程图

从图中看到Struts2的工作流程如下: 1.服务器接收到的请求首先经过一组过滤器链(实际中的其他过滤器可能还包括诸如Spring 的字符过滤器CharactorEncodingFilter、V elocity的过滤器等,一般FilterDispatcher位于过滤器的最后一个执行),过滤器链按照你在web.xml中的配置顺序在接收客户请求时顺序执行,在向客户发送响应时反序执行,Struts2的核心FilterDispatcher在web.xml中的配置如下: setCharactor org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 struts2 org.apache.struts2.dispatcher.FilterDispatcher setCharactor /* struts2 /* 注意:如果你使用的是W ebLogic6.1作为应用服务器,需要使用FilterDispatcherCompatW eblogic61替代FilterDispatcher。 2.请求被送到FilterDispatcher之后,FilterDispatcher会通过其私有静态的属性ActionMapper 询问这个请求是否需要调用Action处理,如果需要调用Action,FilterDispatcher会把请求委托给ActionProxy,ActionProxy调用ActionInvocation查找配置文件中该Action的所有信息,并以这个Action为目标创建代理对象(因为Struts2中的Action由于XWork的设计理念,并没有与Servlet的API被调用,所以如果直接调用Action的实例,那么显然基于HTTP 的请求都将无法传入Action。Struts2通过创建Action的代理对象,并使用拦截器将HTTP 的请求信息传入代理对象,这是典型的AOP处理方式,这也实现了控制器与Servlet的API 的分离,这是Struts1.x所欠缺的优秀的设计方式),然后执行该Action之前的所配置的所有拦截器,与过滤器相同,在接受请求时,会顺序执行你在配置文件中为该Action配置的拦截器顺序; 3.在穿越拦截器之后,就会执行Action,当Action执行完毕,ActionInvocation就要使用result

struts2+spring3+hibernate整合教程

Struts2+Spring3+hibernate3整合 (2011年7月末,最新) 上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。想了想,我没老婆,难道没什么好写了!不难… 献给我暗恋过的每一个女人!(嘿嘿…) 如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!

一,需要的框架包 二,建立project,添加相应的.jar文件(重点) 1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。 2,src中创建需要的类,这里以一个域模型为user的例子说明。(现在建立这些类,可以方便我们在搭建时候随时测试!) User.java IUserDao.java

UserDaoImpl.java IUserService.java UserServiceImpl.java

3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。 4,拷贝spring运行中需要的其他jar文件,主要是 https://www.wendangku.net/doc/cd7062417.html,mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies 中找到。 ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什 么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar 包) iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。 5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。

java 问题汇总(总结,重点)

在用到spring框架中时,场景如下 post 请求过去,对象接收不到参数的值(解决办法:考虑到在参数上加个@RequestBody 注解即可,有些没加的是框架帮忙处理了后默认接收的是json串) http://localhost:8080/xxxxxxxxxxx-xxxxxxx-api/xxxxxx/xxxxx/xxxxxxxxx/sugges t/add.sgt ================================================== ==================================== mapper.xml->@Repository{存储数据层}->@Service{业务层}->@Controller{展示层} (spring注解可以理解为这样的线性,任其项目结构怎么变这样的线性结构是不会变的,万变不 离其宗) @Repository @Service @Controller均是注册在spring上下文中 @Autowired 在spring上下文中找bean @Qualifier 配合@Autowired使用当找到多个同一类型的bean,则会抛异常,此时可以使用@Qualifier("beanName"),明确指定bean的名称进行注入 @RequestMapping 配置连接 @Required 注册在sett方法上,检查有没有被调用 @RequestParam 绑定参数 @RequestBody读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例 一、概述 本章讲述Struts2的工作原理。 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x 与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。 Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。 本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问https://www.wendangku.net/doc/cd7062417.html,/xwork/download.action即可自行下载。 下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到 struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。 (图14) 二、主要的包和类 Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

struts1教程

本系列教程将详细介绍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脚本如下所示:

# 建立数据库struts CREATE DATABASE IF NOT EXISTS struts DEFAULT CHARACTER SET GBK; # 建立表t_products CREATE 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所示。

相关文档