`

struts1学习笔记二

阅读更多

struts转发请求
在struts的配置文件struts-config.xml文件中,可以配置forward标签,它用于封装一个转发地址。如:
<forward name=“success" path="/success.jsp"/>


struts配置文件的常用配置
<action
path=“/register“ 指定action处理的地址
type=“cn.itcast.RegisterAction" 请求action的完整类名
name=“UserFormBean“ 指定封装请求参数的formBean
scope="request" 把formBean放到哪个域对像中 默认为session
attribute=“myformbean" 指定formBean存储的key,不指定默认为name的值
input="/register.jsp" formBean效验失败后跳转到的页面
forward=“welcome.jsp“ 请求后跳转到页面
include="welcome.jsp" 请求时进行页面包含
unknown= “true" 对未知请求的处理
parameter=“method” 配置action的参数,可以调用mapping.getparameter("")
classname=“” action标签和所有配置信息使用哪个对像封装 默认值为actionmapping
validate="true" > 是否让struts自动调用formBean的volidate方法进行效验
<forward name="hello"
path="/success.jsp"/>
</action>




<html:link>标签的好处:
使用<html:link action=“/action”/>不用关心web应用程序的名称。
可以自动附加jsessionid参数进行url重写。
可以对参数信息进行url编码。
<html:link>标签常用属性:paramID、paramName、name、property。

<%request.setAttribute("name","中国"); %>
<html:link action="/registerUI?name=" paramId="name" paramName="name">注册</html:link>


用户使用<html:errors>标签可以很轻松获取到errors中保存的校验信息
1需要一个资源文件的支持 xx.properties
2 web.xml中
<message-resources parameter="cn.yue.resource.Myresource"></message-resources>




actionmessage
中文字符转unicode native2ascii 汉字
取资源文件方法一
ResourceBundle bundle=ResourceBundle.getBundle("cn.yue.resource.Myresource");
bundle.getString("");
方法二
MessageResources messageResources=MessageResources.getMessageResources("cn.yue.resource.Myresource");
messageResources.getMessage("");
表单效验
需要重写formBean的volidate方法
日期效验

DateLocaleConverter converter=new DateLocaleConverter(Locale.CHINA,"yyyy-MM-dd");
二 将beanutils包更换为1.8版本
枚举效验
名.valueof(属性名)




数据回显
formbean放在request作用域中,则可${frombean.属性名}


el函数
contains 查看某字串是否被另一个包含
${fn:contains(name, searchString)}
join 将数组按什么格式转换为字符串
${fn:join(array, ";")}


struts标签
<html:text>
<html:password redisply="false"> 不回显
<html:radio>
<html:select>
<html:option>
<html:checkbox> 没有回显功能
<html:multibox>
<html:textarea>






html 产生一个<html>标签。也包括来自于用户会话中的 language 属性
form 定义一个表单。Action 和 focus 属性是最有用的属性
checkbox 产生一个检查框字段
file 产生一个文件选择输入字段
hidden 产生一个隐藏字段
option 产生一个选择项
options 产生一个选择项列表
password 产生一个口令输入字段
radio 产生一个单选输入字段
select 产生一个选择元素
text 产生一个文本输入字段
textarea 产生一个 html 文本区域元素
image 产生一个图像输入字段
button 产生一个按钮输入字段
cancel 产生一个取消按钮
submit 产生一个提交按钮
reset 产生一个重新设定按钮
errors 显示错误消息
img 产生一个 html img 标签
formBean的reset struts在把表单数据封装到bean中时,会先调用reset方法




表单重复提交
saveToken(request);


boolean b=isTokenValid(request);
if(b==false)
{
System.out.println("表单重复提交");
return null;
}
resetToken(request);
System.out.println("处理请求");


中文乱码问题
1 过滤器
public class CharaterEncodingFilter implements Filter {
public void destroy() {
}


public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;


httpServletResponse.setCharacterEncoding("utf-8");
httpServletResponse.setContentType("text/html;charset=utf-8");
httpServletRequest.setCharacterEncoding("utf-8");
chain.doFilter((HttpServletRequest) Proxy.newProxyInstance(CharaterEncodingFilter.class.getClassLoader(), request.getClass().getInterfaces(), new InvocationHandler() {


public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getName().equals("getParameter")) {
return method.invoke(httpServletRequest, args);
}
if (httpServletRequest.getMethod().equalsIgnoreCase("get")) {
return method.invoke(httpServletRequest, args);
}
String value = (String) method.invoke(httpServletRequest, args);
if (value == null) {
return null;
}
return new String(value.getBytes("iso8859-1"), "utf-8");
}


}), response);// 防止调用request.getParameter,增强类的方法
}


public void init(FilterConfig filterConfig) throws ServletException {
}
}

web.xml中配置过滤器
2 重写Actionsevlet
在service方法中设置request.setCharacterEncoding("utf-8");
更改web.xml文件
3 重写requestProcessor(请求处理器)
在process中request.setCharacterEncoding("utf-8");
web.xml保持不变
<controller processorClass="cn.yue.web.action.MyProcessor"></controller>
4 更改tomcat设置




把表单bean整到实体bean
1 BeanUtils.copyProperties(user, form);
该工具类只支持string类型,如果实体bean中有其他类型,需要注册转换器
ConvertUtils.register(new Converter() {
public Object convert(Class type, Object value) {
if (type != Date.class) {
throw new ConversionException("对不起你输入的类型不正确");
}
if (value == null) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
return dateFormat.parse((String) value);
} catch (ParseException e) {
throw new ConversionException("类型转换失败");
}
}
}, Date.class);
2 在web工程启动时注册转换器
1 编写监听器 RegisterConvertListener implements ServletContextListener 在contextInitialized(ServletContextEvent sce)方法中注册
3 在web.xml中
<listener>
<listener-class>cn.yue.web.listeners.RegisterConvertListener</listener-class>
</listener>


为了防止表单属性的反复转换,可以在formBean中添加一个实体bean的属性,在效验的过程中给实体bean赋值,这样就可以在action中用form.getxx()取得实体


如果表单提交不需要验证,可以直接在formBean 中实设置一个bean属性,页面中使用bean.属性




业务逻辑效验


跳转到input指定的页面
return mapping.getInputForward();


将错误信息存放到struts的错误信息中
1 方法一request.setAttribute("org.apache.struts.action.ERROR", errors); //GLOBAL
2 方法二saveErrors(request, errors);


数据回显
UserForm userForm=new UserForm();
userForm.setUserName(username);
request.setAttribute("userform", userForm);//用的是页面中form表单名作为关键字,也就是xml中formBean的名字




action处理多个不同请求方法
方法一
页面 <html:link action="/BookAction?method=add">添加书籍</html:link>
action中 String method = request.getParameter("method");
if ("add".equals(method)) {
add(mapping, form, request, response);
}
方法二
DispatchAction MappingDispatchAction




加载多个xml文件用逗号分开


动态FormBean
1 <form-bean name="dynaForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name=“username" type="java.lang.String"/>
<form-property name=“birthday" type="java.lang.String"/>
<form-property name=“preference" type="java.lang.String[]"/>
<form-property name=“email" type="java.lang.String"/>
</form-bean>
2 如果需要校验,则要写一个formBean重写volidate方法

分享到:
评论

相关推荐

    Struts2学习笔记

    根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

    struts2学习笔记总结

    本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...

    struts2学习笔记(1)

    ### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...

    struts2学习笔记(完美总结)——转自OPEN经验库

    Struts2是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller (MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    struts2学习笔记

    struts2学习笔记struts2学习笔记struts2学习笔记

    struts2学习笔记.doc

    ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    张龙圣思园struts2学习笔记word

    张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...

    struts2学习笔记黑马程序员

    ### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...

    struts2.0学习笔记1

    struts2.0学习笔记1 自己动手做的还算可以的 ]struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的struts2.0学习笔记1 自己动手做的还算可以的

    Struts1及14. Struts2学习笔记

    本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...

    struts2四天的学习笔记

    13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...

    struts2学习笔记(详细文字)

    structs2很详细的学习笔记,structs2的建造,工作原理,例子,逐步讲解,纯文字的

    Struts1学习笔记总结.pdf

    Struts1学习笔记总结 Struts1是一种基于MVC模式的Web应用框架,它可以帮助开发人员快速构建高效、可维护的Web应用程序。下面是对Struts1学习笔记的总结,涵盖了Struts1的基本概念、工作流程、标签、国际化等方面的...

    struts2 学习笔记 实战

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace ...

Global site tag (gtag.js) - Google Analytics