第一范文网 - 专业文章范例文档资料分享平台

Struts2笔记

来源:用户分享 时间:2025/6/29 0:43:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

全局结果的配置

异常机制配置

全局异常配置

(2)ACTION改善 实现Action接口

Action包含五个常量和一个execute()方法 五个常量:SUCCESS “success”

NONE “none” LOGIN “login”

ERROR INPUT

“error” “input”

ACTION进一步改进改善 继承ActionSupport (实现了很多接口 Action 验证接口 国际化文本act)

一般要重写execute()方法 其他方法选择使用

Struts2框架 每次都会构造一个新的action 使用的是prototype的方式 如果action累继承了ActionSupport重写了validate()方法 会先执行validate方法 在执行execute方法 重写validate方法 实现验证(non-Javadoc)

* @see com.opensymphony.xwork2.ActionSupport#validate() 如果验证方法中添加了错误信息,就不会执行execute方法

会自动返回“input” 去配置中查找result name=input 如果成功,就会执行execute()方法

Action如何访问servlet api

<1>使用ActionContext <2>实现接口 <3>使用ServletActionContext

《1》使用ActionContext上下文对象

每个action实例,都会具有一个Action上下文对象

ActionContext context = ActionContext.getContext();

Map session = context.getsession();该Map类型的对象等价于Servlet中的的HttpSession;

Session.put(“nameserror”,“用户名不能为空”);等价于HttpSession对象中的setAttribute(“逻辑名”,值);

Map application = context.getApplication();该Map对象等价于Servlet中的ServletContext getApplivation

Context.put(“nameerror”,“用户名不能为空request范围”)

《2》1.直接使用Servlet API(一) 实现接口 比较麻烦 得需要实现接口

例如:public class RegistAction4 extends ActionSupport implements ServletRequestAware,ServletResponseAware

this.request.setAttribute(\用户名不能为空request\

request.getSession().setAttribute(\用户名不能为空session\

//该方法是实现接口的抽象方法 会自动执行 执行一定在execute方法之前 @Override public void setServletRequest(HttpServletRequest request) { //完成成员变量初始化 this.request = request; }

@Override

public void setServletResponse(HttpServletResponse response) { }

2.直接使用Servlet API(二) 不需要实现接口 使用SrevletActionContext 提供静态的 获取servlet api的方法

HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); ServletContext application = ServletActionContext.getServletContext(); HttpSession session = request.getSession();

Action Model Driven 模型驱动

* 使用模型驱动 需要使用ModelDriven拦截器 该拦截器默认会引用 * 步骤:

* 让Action类实现ModelDriven接口 * 实现抽象方法public Object getModel()

* 可以直接将参数抓取后封装为一个bean模型对象

Struts2框架可以将表单参数直接抓取,并封装在一个bean对象中,并将 该对象放在栈的顶端。 Interceptor

,必须使用modelDriven拦截器,该拦截器已经在默认

拦截器栈defaultStack中引用,所以默认的action都可以使用该模型驱动模式。 使用方式

Action类实现接口ModelDriven ,实现方法Object getModel() ,返回的对象就是封装好表单参数的对象,所以要有封装表单参数对应的javaBean类。

具体参考帮助文档

Struts2校验

客户端校验和服务器端校验

客户端:页面校验 例如JavaScript 服务器端:业务校验代码 validate验证

使用validate方法验证数据

ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。 如果Action类重写了validate()方法,Struts2在调用execute方法之前首先会调用这个方法,

如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可使用 addFieldError或addActionError(很少用)加入相应的错误信息,如果存在Action或Field错误,

Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,

Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方

法。

使用validate方法验证数据

1.注册页面 register.jsp

2.Public class RegisterAction extends ActionSupport public void validate() { if(this.getName().length()<1||this.getName().length()>10){ this.addFieldError(\用户名不能为空,并且不能大于10位\ } if(this.getPassword().length()<6||this.getPassword().length()>10){ this.addFieldError(\密码必须在6-10位\ } }

3.配置RegisterAction

/registerSucc.jsp

4.registerSucc.jsp ${requestScope.user }注册成功!

Struts2验证框架同样可以支持客户端验证,这样要求如下:

(1)页面的表单需要使用struts2标签

(2) 标签的主题不能设置为simple,使用默认html即可 (3) 标签设置属性validate=“true”

这样,框架就会将验证xml文件的规则生成页面的js脚本进行客户端验证

这种方式不是提倡的,原因在于错误提示信息出现的位置比较死板,无法控制, 比如想弹出错误信息,或在输入框后面提示,无法完成。

所以我们一般要么直接在前台写js验证脚本或使用验证框架服务器端校验, Struts2表单标签 输入框等同样可以添加js事件

补充:

使用struts2标签s:form 实现的表单,可以在验证错误 后跳转回来,不丢失原来输入的数据。

原因是struts标签是有主题theme的,但是struts2标签 s:form

搜索更多关于: Struts2笔记 的文档
Struts2笔记.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c12tkz6gzeb553972zwso_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top