- 浏览: 1230891 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lankk:
lankk 写道事实上,在运行String s1=new St ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
事实上,在运行String s1=new String(&qu ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
同意1楼的说法http://docs.oracle.com/j ...
理解String 及 String.intern() 在实际中的应用 -
raoyutao:
...
jdk 线程池 ThreadPoolExecutor -
hongdanning:
理解了。之前困惑的一些明白了。谢谢分享。
理解String 及 String.intern() 在实际中的应用
1、动态ActionForm * 动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以 得到标准ActionForm的所有功能 * 在struts-config.xml文件中定义动态ActionForm,如: <form-beans> <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="name" type="java.lang.String" /> <form-property name="age" type="java.lang.Integer"/> </form-bean> </form-beans> *在Action中使用动态ActionForm,参见DynaActionFormTestAction.java DynaActionForm daf = (DynaActionForm)form; String name = (String)daf.get("name"); Integer age = (Integer)daf.get("age"); 动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值 动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}, 参见:dyan_actionform_success.jsp 动态Action的验证,通常使用动态验证框架validator ----------------------------------------------------------------------------------------------- 2、采用struts上传 * 页面中的配置如下: <form action="upload.do" method="post" enctype="multipart/form-data"> title:<input type="text" name="title"><br> file:<input type="file" name="myfile"><br> <input type="submit"> </form> * 在ActionForm中使用FormFile来接收上传的文件,参见:UploadActionForm.java private String title; private FormFile myfile; * 在Action中调用FormFile取得上传文件数据,采用流输出,完成上传,参见:UploadTestAction.java public class UploadAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UploadActionForm uf=(UploadActionForm)form; String tilte=uf.getTitle(); FormFile myfile=uf.getMyfile(); if(myfile!=null){ FileOutputStream fos=new FileOutputStream("c:\\"+myfile.getFileName()); fos.write(myfile.getFileData()); fos.flush(); fos.close(); uf.setTitle(myfile.getFileName()); uf.setFileSize(myfile.getFileSize()); } return mapping.findForward("success"); } } 上传文件大小的设置:<controller maxFileSize="300M"/> </action-mappings> <controller maxFileSize="400M"> </controller> </struts-config> ----------------------------------------------------------------------------------------------- 3、测试ActionForm类型的自动转换 * boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false * Date类型的转换: * 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换 * 如果是java.util.Date,默认情况下struts无法转换 --------------------------------------------------- * 自定义转换器的实现步骤 * 实现converter接口,实现convert方法 /** * java.util.Date转换器 * @author Administrator * */ public class UtilDateConverter implements Converter { public Object convert(Class type, Object value) { System.out.println("UtilDateConverter.convert() value=" + value); if (value == null) { return new Date(); } if (value instanceof Date) { return value; } if (value instanceof String) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { return sdf.parse((String)value); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } } * 将实现的conerter注册,通常情况采用servlet注册 /** * 注册UitlDateConverter * @author Administrator * */ public class UtilDateConverterInitWithServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("UtilDateConverterInitWithServlet.init()"); ConvertUtils.register(new UtilDateConverter(), java.util.Date.class); } } * 采用servlet注册需要注意标签的配置,<load-on-startup>10</load-on-startup> <servlet> <servlet-name>UtilDateConverterInitWithServlet</servlet-name> <servlet-class>com.bjsxt.struts.UtilDateConverterInitWithServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> *(也可以采用struts plugin注册) /** * 注册UitlDateConverter * @author Administrator * */ public class UtilDateConverterInitWithPlugin implements PlugIn { public void destroy() { } public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { System.out.println("UtilDateConverterInitWithPlugin.init()"); ConvertUtils.register(new UtilDateConverter(), java.util.Date.class); } } </action-mappings> <plug-in className="com.bjsxt.struts.UtilDateConverterInitWithPlugin"/> </struts-config> 4、空字段问题 * 如果html没有写input输入域,jsp脚本接收到的值为null,el表达式则为空串 * 如果html中存在input输入域,没有输入值,那么jsp脚本和el表达式接收到的都是空串 Struts对ActionForm的自动搜集过程: * 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值 * 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性 根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型 可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。 public class AddUserAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //获取从页面表单中提交过来的值 UserActionForm uaf = (UserActionForm)form; //创建User实体对象,并将ActionForm中的内容设置到User对象中 // User user = new User(); // user.setUserId(uaf.getUserId()); // user.setUserName(uaf.getUserName()); // user.setPassword(uaf.getPassword()); // user.setEmail(uaf.getEmail()); // user.setContactTel(uaf.getContactTel()); // user.setCreateDate(new Date()); User user = new User(); BeanUtils.copyProperties(user, uaf); user.setCreateDate(new Date()); //调用业务逻辑操作 UserManager.getInstance().addUser(user); return mapping.findForward("success"); } } ------------------------- 测试ActionMapping 1、在struts-config.xml文件中每一个<action>标签对应了一个ActionMapping实例 2、理解<action>标签中的forward属性和unknown属性 只能拦截*.do的未知页面 <action path="/testunknown" forward="/unknown.jsp" unknown="true" ></action> 3、了解一下jstl和struts tag对页面数据的保持 jstl:------- <form action="login.do" method="post"> 用户:<input type="text" name="username" value="${loginForm.username }"><br> 密码:<input type="password" name="password" value="${loginForm.password }"><br> <input type="submit" value="登录"> </form> tag:-------- <html:form action="login2.do" method="post"> 用户:<html:text property="username"/><br> 密码:<html:password property="password"/><br> <html:submit value="登录"/> </html:form> 测试ActionFoward * 理解全局和局部ActionFoward * redirect * struts-config.xml文件是不允许修改的 * 理解动态ActionForward,动态ActionFoward是可以修改参数的
发表评论
-
struts2 url 映射 查看 Struts Configuration Browser
2012-02-17 18:21 1432查看所有struts2映射到的url 2个办法 ... -
(转) Struts2 URL参数 s:if 判断应用
2010-10-27 14:56 3550Struts2的s:if标签很怪异,下面来具体地看看,如何用s ... -
struts2 动态 跳转 result
2010-07-29 17:22 2417<action name="user&q ... -
struts2 国际化 文件名 格式
2010-07-08 18:30 1217今天突然发现当浏览器语言是zh-tw的时候,显示的还是简体中文 ... -
struts2 ServletActionContext
2010-05-19 18:30 1741structs2 中提供了ServletActionConte ... -
struts2 访问 静态属性 静态方法
2010-05-19 15:20 1855静态方法 <s:property value=&quo ... -
struts2 s:select list取值
2010-05-05 15:48 15759<s:select id="Select&qu ... -
struts2 ModelDriven update
2010-04-28 12:42 1239public class ContactAction exte ... -
struts2 date money 格式化输出
2010-04-27 18:37 1869<s:date name="#note.cre ... -
struts2 不验证 方法
2010-04-27 18:32 1439用了struts2 的验证框架(如:action-valida ... -
jsp 页面访问 list size()
2010-04-27 14:18 3364jstl 1、在jsp页面中不能通过${list . ... -
struts2 带参数的redirect json
2010-04-22 21:16 1750<action name="createAct ... -
struts2 enum值相关
2010-04-14 20:34 1821public enum Dimension implement ... -
struts2 S 标签 取得parametes 值 ognl 判断 null
2010-04-14 14:30 2030<s:hidden name="xId&quo ... -
DispathAction
2009-12-11 17:52 11961、如果复写DispatchAction中的execute方法 ... -
异常处理
2009-12-11 17:39 11841、编程式异常处理 * 截获某个异常 * 创建相应的异 ... -
I18N
2009-12-11 17:36 1444I18N public class I18N { ... -
struts 乱码
2009-07-01 17:27 1145request经过struts处理后默认encoding是is ...
相关推荐
**Struts上传** Struts是Apache软件基金会下的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。在Struts 1.x版本中,处理文件上传主要依赖于`org.apache.struts.upload.FormFile`...
1. Struts1中的文件上传:在Struts1中,文件上传主要依赖于`commons-fileupload`和`commons-io`两个库。首先需要在`struts-config.xml`中配置`action`元素,启用流处理。然后在表单中使用`<html:file>`标签指定上传...
Struts1是一个经典的Java Web框架,它在处理用户请求和业务逻辑方面表现出色,尤其是在文件上传功能上。本文将深入探讨Struts1中的文件上传,包括单文件上传、多文件上传,以及解决文件名乱码和重名冲突等问题。 1....
同时,确保表单中的`file`字段名与ActionForm中的属性名一致,以正确地接收上传文件。 #### 4. 集成进度条样式与脚本 页面中使用的进度条样式通过CSS定义,而进度条的动态更新则依赖于DWR与服务器端的交互。通过...
2. Struts采用配置驱动的方式,主要配置文件是struts-config.xml,用于定义Action、ActionMapping和结果视图等。 二、多附件上传原理 1. 文件上传是HTTP协议中POST请求的一种特殊形式,通常涉及到multipart/form-...
在这个特定的项目中,我们看到的是一个关于如何使用Struts实现图片上传、存储到数据库以及在JSP页面显示的过程。以下是相关的知识点详解: 1. **Struts框架**:Struts是Apache软件基金会的一个开源项目,它提供了...
struts1.2 图片文件上传(单个/动态多个) 单个的采用通用Action 需要ActionForm的,而动态多个上传是采用动态代理类(DispatchAction) 希望对大家有用,另JSP在IE测试通过,JS我就不再处理了!
### 采用DWR+AJAX和Struts开发文件上传进度条 #### 一、概述 在Web应用开发中,文件上传是一项常见的功能需求。传统的文件上传方式无法提供良好的用户体验,尤其是对于大文件上传时,用户很难了解到上传进度,进而...
在Struts框架中,我们可以使用`org.apache.struts.action.ActionForm`子类来接收表单数据,并利用`org.apache.struts.upload.MultipartRequestHandler`处理多部分请求,这是HTTP协议用于上传文件的格式。 1. **配置...
Struts1.2框架在处理Web应用程序中的文件上传功能时提供了便利...同时,随着技术的发展,Struts1逐渐被淘汰,现在的开发更多采用Struts2或者其他现代的MVC框架,如Spring MVC,它们提供了更强大且安全的文件上传支持。
Struts2可以通过Action类来处理用户提交的请求,配合ActionForm或Pojo类来接收和验证用户输入的数据。同时,可以利用Session或Cookie来管理用户的登录状态。 3. **服务器校验**:服务器端验证是确保用户输入数据...
- **struts-upload.jar**:用于文件上传的功能。 ##### 3.2 Struts Framework的工作原理和组件 - **3.2.1 StrutsActionServlet** - 初始化Struts框架。 - 负责处理HTTP请求,并将其转发给相应的Action对象。 - ...
接着,书中将详述如何配置Struts框架,包括struts-config.xml文件的编写,以及ActionForm、Action、Interceptor等核心组件的使用。读者还将了解到如何处理HTTP请求,以及如何与视图层(如JSP)进行交互。 在JSP部分...
### Struts中的上传及下载知识点解析 #### 一、知识点概览 在Struts框架中,上传和下载功能是常用且重要的组成部分。本篇将基于提供的文件内容来深入讲解Struts框架下的文件上传与下载机制。 #### 二、知识点详解...
Struts2则是在Struts1的基础上进行了大幅改进和扩展,它采用了拦截器(Interceptor)机制,使得业务逻辑处理更加灵活。Struts2的核心是Front Controller(StrutsPrepareAndExecuteFilter),它负责拦截所有请求并...
- **Struts2的核心控制器**:Struts2采用了不同的架构设计,不再依赖于Servlet作为核心控制器。Struts2的核心控制器实际上是由一系列过滤器(Filter)组成的,其中最核心的是`StrutsPrepareAndExecuteFilter`。这意味...
- **MVC架构**:Struts采用经典的MVC架构,将一个应用程序分为模型(Model)、视图(View)和控制器(Controller)三部分。模型负责存储数据并提供业务逻辑;视图负责数据展示;控制器则作为两者之间的桥梁,接收...