Snowdream

I'm awake but my world is half asleep
posts - 398, comments - 234, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2007年5月1日

struts标签库中有相应html:file标签,enctype这个属性貌似去掉也可以,不知道有什么用。
1<html:form action="/upload" enctype="multipart/form-data">
2theFile : 
3<html:file property="theFile" />
4<html:errors property="theFile"/><br/>
5<html:submit/>
6</html:form>
网上看到的例子是在Action类中处理的,不知道这么做合不合理,这个是简单的处理代码,没有验证文件大小和同名文件是否存在,注意先要在相应目录中建立file目录。
 1UploadForm uploadForm = (UploadForm) form;// TODO Auto-generated method stub
 2FormFile file = uploadForm.getTheFile();
 3try {
 4  InputStream stream = file.getInputStream();
 5  String filePath = getServlet().getServletContext().getRealPath("/");
 6  OutputStream fileout = new FileOutputStream(filePath + "/file/" + file.getFileName());
 7  int bytesRead = 0;
 8  byte[] buffer = new byte[8192];
 9  while ((bytesRead = stream.read(buffer, 08192)) != -1{
10    fileout.write(buffer, 0, bytesRead);
11  }

12  fileout.close();
13  stream.close();
14}
 catch (Exception e) {
15  System.err.println(e);
16}

一点积累:
1. Action类代码中要获得当前地址可以使用
getServlet().getServletContext().getRealPath(String)

2. Forward的目标地址前面貌似都要加"/"。 Path success.jsp does not start with a "/" character

posted @ 2007-05-01 21:04 ZelluX 阅读(322) | 评论 (0)编辑 收藏

1. 控制器以请求中的值来填写ActionForm实例之前,会先调用reset()方法。将ActionForm的值重新设置回原来的状态很重要,因为表单bean实例可能会由多个请求共享或者好几个不同的线程所存取。不过,如果是让好几页共享一个ActionForm实例,可能不会想去实现reset()方法,这样这个实例的性质就不会被重新设置。

2. Struts 1.1 多了一个新的ActionForm类型,名为org.apache.struts.action.DynaActionForm。它可以配置给动作映射,并自动处理从HTML表单传递给这个Action对象的数据。原因在于它在内部使用了一个Map对象存储数据。

3. JSP 主要的问题是:
   a) 开发人员可以自由的将应用逻辑内嵌到JSP页面中,结果使得程序难以维护(JSP2.0中可以配置JSP页面,使其不能使用scriptlet)
   b) JSP页面有变动时,容器必须重新编译JSP页面。
一种常见的替代方案是结合XML和XSLT。

4. Struts 1.1 可以为应用程序定义多个MessageResource。


5. war文件实际上就是zip文件。

6. Struts 配置
呃,这一块怎么这么熟呢?貌似孙卫琴的那本精通struts从这里抄了一堆东西。。。。

posted @ 2007-05-01 19:12 ZelluX 阅读(270) | 评论 (0)编辑 收藏