一.配置Struts的环境:
1、安装Struts
* 拷贝Struts lib下的所有jar包,放到项目的web-inf/lib下
* 建立struts-config.xml文件,放到项目的web-inf下
* 修改web.xml
2、创建用户登录项目
* 创建jsp文件(login.jsp,login_success.jsp,login_error.jsp)
* 创建LoginActionForm
* 创建LoginAction
* 配置struts-config.xml文件
动态ActionForm
动态ActionForm的编写:
动态ActionForm是为了避免过多的ActionForm类而设计的,使用动态ActionForm
可以获得静态AcitonForm的所有好处;
1、在Struts-config.xml定义动态AcitonForm
如:
<form-bean name="dynaUserActionForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="name" type="java.lang.String"/>
<form-property name="age" type="java.lang.Integer"/>
</form-bean>
2、在Action中使用的时候,需要强制转换为DynaActionForm类型,同时使用get方法来获取
如:
DynaActionForm dynaform = (DynaActionForm)form;
String name = (String)dynaform.get("name");
Integer age = (Integer)dynaform.get("age");
参考:DynaActionFormTestAction类
----------------------------------------------------------------
上传文件:
1、页面的action需要配置:enctype="multipart/form-data",如:
<form action="upload.do" method="post" enctype="multipart/form-data">
标题:<input type="text" name="title"><br>
文件名:<input type="file" name="myfile"><br>
<input type="submit" value="上传"><br>
</form>
注意:method必须设置为post
2、ActionForm中使用FormFile来接收文件
3、在Action中调用FormFile即可取得上传文件的相关数据,完成上传
参见:UploadAction类
空字段的问题:
如果页面没有写<input>,用jsp脚本在后台接收到的字符串为null,及空对象,如果用EL表达式,则为空串“”
如果页面中有<input>,没有输入值,后台接收到的为空串“”
----------------------------------------------------------------
Struts对ActionForm类型的自动转换:
boolean: yes,y,1,true,on这些都可以转换为true类型,而且是忽略大小写的;其它情况会转换为false类型
Date类型的转换:
* 如果定义Date为: java.sql.Date类型,页面传递到后台的相应属性不能为空字符串,而且其格式
必须是yyyy-MM-dd。
* 如果定义Date为:java.util.Date类型,默认情况下,struts无法转换此类型,我们需要定义
自己的Converter来进行转换
----------------------------------------------------------------
Struts对ActionForm类型的自动转换过程:
1、搜索request中的parameter
2、把request中所有的参数名称和值(字符串类型)放到map中(key为参数名称,value为值)
3、调用BeanUtils.setProperty方法,将map中的值逐个设置到ActionForm的数性上;
*对于ActionForm中的每一个属性,根据属性的类型,调用相应的Converter
*调用Converter的convert方法,将相应的字符串转换成ActionForm中指定的类型
Converter的convert方法如下:
public Object convert(Class type, Object value) {}
如果我们要转换为java.util.Date类型(即从一个字符串转换为java.util.Date类型),步骤如下:
1、实现一个Converter
2、将converter进行注册(通常用servlet注册,注意servlet标签中的<load-on-startup>标签的值必须大于等于0,web server在启动的
时候才会调用servlet的init方法 )
----------------------------------------------------------------
我们可以通过BeanUtils.copyProperties(目标对象,源对象) 方法,在ActionForm对象和实体对象之间复制,避免过多的调用get/set方法
ActionForward
1、理解全局ActionForward和局部ActionForward的区别和使用;
2、理解redirect的使用
3、理解如何动态生成ActionForward对象
* 动态创建ActionForward时,可以修改ActionForward的参数,
参见:DyanActionForwardTestAction
不能在代码中更改配置文件的属性,参见:StaticActionForwardTestAction
四.
1、struts建议最好所有的转向都由Struts开控制
2、理解ActionMapping中forward的含义
3、理解ActionMapping中unknow配置的作用
4、了解如何保持住页面数据
六.Struts国际化的处理
Struts国际化处理的配置:
1、在Struts-config.xml最后加入
<message-resources parameter="MessageResources" />
2、提供不同语言版本的资源文件
3、在jsp中使用<bean:message key=""/> 标签,将硬编码文本国际化
4、如何通过程序更改系统默认的Locale
需理解:
* struts的缺省语言环境(Locale)与什么有关?
* 如何通过程序更改系统的默认Locale?
消息文本的国际化处理方案:
总共分成三个部分:如何创建消息?如何传递消息?如何显示消息?
如何创建消息?
区分ActionMessages对象和ActionMessage对象,这两个对象的意义
如何传递消息?
调用saveMessages(传递普通消息)/saveErrors(传递错误消息)方法
如何显示消息?
通过<html:messages/>标签来显示消息(既可以显示普通消息也可以显示错误消息)
通过<html:errors/>标签显示错误消息(只能显示错误消息)
Jstl的配置方法
jstl的配置方法:
1、将jstl.jar和standard.jar拷贝到web-inf/lib下即可(如只使用EL表达式,无需引用这两个包)
2、在jsp页面头部引入taglib方法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="my" uri="http://www.bjsxt.com/functions" %>
注意:JSTL必须在能够支持J2ee1.4/servlet2.4/jsp2.0版本以上的容器才能运行,这个环境配置
是目前最常用的版本
3、JSTL重点
* EL表达式的用法
* c:out标签
* c:if/c:choose/c:when/c:otherwise标签
* c:forEach标签
* fmt:formatDate标签
* fmt:formatNumber标签
* 函数库的使用
* 自定义函数库
* 定义类和方法(必须定义为public static)
* 编写tld文件,并且将tld文件放到WEB-INF下
* 在jsp中使用taglib指令引入自定义标签库
* 直接使用即可
Struts标签的使用
Struts标签的使用
1、配置国际化支持
* 在struts-config.xml文件中加入国际化支持标签,<message-resources parameter="MessageResources" />
此标签必须放到所有标签的最后面;
* 最好将MessageResources.properties文件放到类路径下;
2、使用标签
* 使用taglib指令引入标签库:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
* 就可以在jsp中使用标签了
测试beanwerite
测试logic:emtpy,logic:NotEmpty,logic:present,logic:NotPresent
测试logic:iterate
关键.常用类:
DispatchAction 动态Action类
org.springframework.web.struts.DelegatingActionProxy 动态代理
HibernateTemplate Hibernate模板类.
分享到:
相关推荐
### Struts学习笔记详解 #### 一、Struts框架概览与编码设置 在学习Struts框架时,首要关注的是其编码配置。如代码片段所示,`struts.i18n.encoding`常量被设置为`UTF-8`,这确保了国际化(I18N)资源文件的正确...
在本“Struts学习笔记(四)”中,我们将会深入探讨Struts框架的核心概念、工作原理以及如何实际运用到项目开发中。 首先,Struts框架的核心目标是提供一个结构化的开发环境,将业务逻辑、数据处理和用户界面有效地...
博客文章"Struts学习笔记之ActionForm - xiaodaoxiaodao——蓝小刀的自言自语 - BlogJava.mht"可能包含更深入的实践示例和经验分享,包括如何处理ActionForm的生命周期、动态Form Beans、国际化等话题。通过阅读这篇...
### Struts 学习笔记(4):深入理解 OGNL 表达式与 Struts2 标签 #### 一、OGNL 表达式简介 **OGNL**(Object Graph Navigation Language)是一种功能强大的表达式语言,在 Struts2 框架中扮演着非常重要的角色。...
入门级的struts,适合新手入门
Struts是Java EE平台上的一款流行开源MVC框架,...学习Struts不仅有助于理解MVC模式,也能为其他类似的Web框架打下坚实的基础。通过深入研究和实践,开发者可以充分利用Struts的特性,构建出高效、稳定的Web应用程序。
Struts是Apache软件基金会下的一个开源框架,主要应用于Java Web应用程序的开发,它提供了一种组织应用程序代码的方式,使得开发者可以更有效地构建基于MVC(Model-View-Controller)架构的Web应用。JfreeChart则是...
本篇学习笔记将深入探讨Struts的核心概念、工作原理以及如何在实际项目中应用Struts来构建高效、可维护的Web应用程序。 一、Struts框架概述 Struts作为经典的MVC框架,它为Java开发者提供了一种组织应用程序逻辑的...