`
hpjianhua
  • 浏览: 236206 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Struts学习笔记

阅读更多
一.配置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模板类.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics