随笔分类 -  struts2基础

摘要:Struts2的注解功能我们知道通常情况下,Struts2是通过struts.xml配置的。但是随着系统规模的加大我们需要配置的文件会比较大,虽然我们可以根据不同的系统功能将不同模块的配置文件单独书写,然后通过<include>节点将不同的配置文件引入到最终的struts.xml文件中,但是毕竟还是要维护和管理这些文件,因此也会给维护工作带来很大的困扰。为了解决这个问题,可以考虑使用struts2的注解。实际上struts2中最主要的概念就是package、action以及Interceptor等等概念,所以只要明白这些注解就可以了。如果希望使用struts2的注解功能,必须使用一 阅读全文
posted @ 2012-04-05 17:35 一直在等 阅读(561) 评论(1) 推荐(0) 编辑
摘要:<s:token />标签防止重复提交,用法如下:第一步:在表单中加入<s:token /><s:form action="helloworld_other" method="post" namespace="/test"> <s:textfield name="person.name"/><s:token/><s:submit/> </s:form>第二步:<action name="helloworld_*&qu 阅读全文
posted @ 2011-12-29 20:27 一直在等 阅读(578) 评论(0) 推荐(0) 编辑
摘要:property标签property标签用于输出指定值:<s:set name="name" value="'kk'" /><s:property value="#name"/>default:可选属性,如果需要输出的属性值为null,则显示该属性指定的值escape:可选属性,指定是否格式化HTML代码。value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值。id:可选属性,指定该元素的标识iterator标签iterator标签用于对集合进行迭 阅读全文
posted @ 2011-12-28 22:03 一直在等 阅读(693) 评论(0) 推荐(0) 编辑
摘要:OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。相对EL表达式,它提供了平时我们需要的一些功能,如:支持对象方法调用,如xxx.sayHello();支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@com.jim.Constant@APP_NAME;操作集合对象。Ognl 有一个上下文(Context 阅读全文
posted @ 2011-12-27 23:06 一直在等 阅读(825) 评论(0) 推荐(0) 编辑
摘要:包范围资源文件在一个大型应用中,整个应用有大量的内容需要实现国际化,如果我们把国际化的内容都放置在全局资源属性文件中,显然会导致资源文件变的过于庞大、臃肿,不便于维护,这个时候我们可以针对不同模块,使用包范围来组织国际化文件。方法如下: 在java的包下放置package_language_country.properties资源文件,package为固定写法,处于该包及子包下的action都可以访问该资源。当查找指定key的消息时,系统会先从package资源文件查找,当找不到对应的key时,才会从常量struts.custom.i18n.resources指定的资源文件中寻找。Action 阅读全文
posted @ 2011-12-26 20:04 一直在等 阅读(520) 评论(0) 推荐(0) 编辑
摘要:准备资源文件,资源文件的命名格式如下:baseName_language_country.propertiesbaseName_language.propertiesbaseName.properties其中baseName是资源文件的基本名,我们可以自定义,但language和country必须是java支持的语言和国家。如:中国大陆: baseName_zh_CN.properties美国: baseName_en_US.properties现在为应用添加两个资源文件:第一个存放中文:jim_zh_CN.properties内容为:welcome=欢迎学习Struts第二个存放英语(美国) 阅读全文
posted @ 2011-12-25 18:47 一直在等 阅读(682) 评论(0) 推荐(0) 编辑
摘要:当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。例如:在实际应用中,常有以下配置:<action name="user_*" class="com.jim.action.UserAction" method="{1}“ &g 阅读全文
posted @ 2011-12-24 16:05 一直在等 阅读(451) 评论(0) 推荐(0) 编辑
摘要:使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法。如果Action类为com.jim.UserAction,那么该文件的取名应为:UserAction-validation.xml。下面是校验文件的模版:<?xml version="1.0" encoding="UTF-8"?> 阅读全文
posted @ 2011-12-23 22:21 一直在等 阅读(461) 评论(0) 推荐(0) 编辑
摘要:通过validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。validateXxx()方法使用例子: public St 阅读全文
posted @ 2011-12-22 19:33 一直在等 阅读(534) 评论(0) 推荐(0) 编辑
摘要:手工编写代码实现对action中所有方法输入校验通过重写validate() 方法实现, validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。validate()使用例子 阅读全文
posted @ 2011-12-21 22:32 一直在等 阅读(449) 评论(0) 推荐(0) 编辑
摘要:要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口:public class PermissionInterceptor implements Interceptor { private static final long serialVersionUID = -5178310397732210602L; public void destroy() { } public void init() { } public String intercept(ActionInvocation invocatio... 阅读全文
posted @ 2011-12-17 23:56 一直在等 阅读(447) 评论(0) 推荐(0) 编辑
摘要:第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。这两个文件可以从http://commons.apache.org/下载。 第二步:把form表的enctype设置为:“multipart/form-data“,如下: <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post"> < 阅读全文
posted @ 2011-12-16 22:03 一直在等 阅读(381) 评论(0) 推荐(0) 编辑
摘要:action:public String scope() throws Exception{ ActionContext ctx = ActionContext.getContext(); ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app ctx.getSession().put("ses", "session范围");//往session里放入ses ctx.put("req", "request范围&qu 阅读全文
posted @ 2011-12-15 20:51 一直在等 阅读(507) 评论(0) 推荐(0) 编辑
摘要:采用基本类型接收请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。请求路径: http://localhost:8080/test/view.action?id=78public class ProductAction { private Integer id; public void setId(Integer id) {//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值 this.id = id; } public ... 阅读全文
posted @ 2011-12-14 21:57 一直在等 阅读(762) 评论(0) 推荐(0) 编辑
摘要:动态方法调用如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:public class HelloWorldAction{ private String message; .... public String execute() throws Exception{ this.message = "我的第一个struts2应用"; return "success"; } public String other() throws Exception{ this.message = "第二个方法... 阅读全文
posted @ 2011-12-14 21:14 一直在等 阅读(552) 评论(0) 推荐(0) 编辑
摘要:StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入Struts 2框架处理,否则Struts 2框架将略过该请求的处理。当请求转入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同,Struts2对用户的每一次请求都会创建一个Action,所以Struts2中的Ac 阅读全文
posted @ 2011-12-13 21:07 一直在等 阅读(578) 评论(0) 推荐(0) 编辑
摘要:Struts2为Action中的属性提供了依赖注入功能,在struts2的配置文件中,我们可以很方便地为Action中的属性注入值。注意:属性必须提供setter方法。 1 public class HelloWorldAction{ 2 private String savePath; 3 4 public String getSavePath() { 5 return savePath; 6 } 7 public void setSavePath(String savePath) { 8 this.savePath = sa... 阅读全文
posted @ 2011-12-12 21:54 一直在等 阅读(3128) 评论(0) 推荐(1) 编辑
摘要:<action name="helloworld" class="com.jim.action.HelloWorldAction" method="execute" > <result name="success">/WEB-INF/page/hello.jsp</result> </action>result配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值)、 redirect 、 red 阅读全文
posted @ 2011-12-09 23:49 一直在等 阅读(548) 评论(0) 推荐(0) 编辑
摘要:假设我们的访问地址为:http://localhost:8080/struts2/test/helloworld,那么改成http://localhost:8080/structs2/test/sdf/sfs/aaa/helloworld 还能访问到吗?答案是YES很奇怪,为什么呢?让我们来看一下Action名称的搜索顺序1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action2.首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存 阅读全文
posted @ 2011-12-08 22:34 一直在等 阅读(1051) 评论(1) 推荐(0) 编辑
摘要:在默认的配置文件struts.xml 中加入如下配置:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="jim" 阅读全文
posted @ 2011-12-08 21:58 一直在等 阅读(531) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示