public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
// 在进行验证时,先要判断当前的status状态,一般只有insert和update才需要验证
if ("insert".equals(status)) {
if (teacher.getName() == null
|| teacher.getName().trim().equals("")) {
errors.add("teacher.name", new ActionMessage("name.null"));
}
// 验证通过的情况下要进行文件上传
if (errors.size() == 0) {
InputStream is = null;
FileOutputStream os = null;
try {
// 通过IO流操作来进行保存
is = photo.getInputStream();
// 可以使用两种方法取得物理路径
// this.getServlet().getServletContext().getRealPath();
String path = request.getSession().getServletContext()
.getRealPath("/upload")
+ "/";
// 主文件名使用时间戳生成
String fileName = IPTimeStamp.getIPTimeStamp(request
.getRemoteAddr());
// 扩展名,截取文件名的最后一个.后面的内容
fileName += photo.getFileName().substring(
photo.getFileName().lastIndexOf("."));
os = new FileOutputStream(new File(path + fileName));
// 边读边写
byte[] data = new byte[2048];
int length = 0;
while ((length = is.read(data)) != -1) {
os.write(data, 0, length);
}
// 将教师中的图片路径设置为fileName
teacher.setPhotourl(fileName);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
return errors;
}
|
相关推荐
本节主要关注Struts在处理两个关键问题上的高级应用:防止重复提交和文件上传组件的使用。 **一、解决重复提交** 在Web应用程序中,重复提交是一个常见的问题,可能导致数据不一致或服务过载。Struts通过几种策略...
在本文中,我们将深入探讨Struts框架的两个高级特性:如何防止重复提交以及如何实现文件上传功能。 首先,让我们关注重复提交的问题。在Web应用中,用户可能会因为网络延迟或误操作导致同一个表单数据被多次提交,...
7. **文件上传**:Struts支持文件上传功能,通过使用FileUpload组件,可以在表单中添加文件域,然后在Action中处理文件上传请求。 8. **DispatchAction的应用**:DispatchAction允许一个Action处理多个请求,通过...
- 使用Token机制防止重复提交。 - 在`struts.xml`中配置Token拦截器。 - 在Action类中处理Token验证逻辑。 #### 八、杂项 **8.1 常见问题解答** - **问题汇总**:针对Struts2开发过程中常见的问题进行总结和解答...
5. **Session与Token机制**:testtokensession.rar和testtoken.rar可能涉及了防止重复提交和session管理的策略。在Web开发中,为了防止用户意外或恶意的重复提交,通常会使用Token机制。同时,session管理也是重要的...
防止表单重复提交是Web开发中的一个重要问题,Struts提供了一些机制来解决这个问题,例如使用Token机制或在服务器端检查请求的状态。复选框和下拉列表框的处理则涉及到如何在表单中正确绑定和传递这些组件的值。文件...
24. **防止重复提交**:可以使用s:token标签防止表单重复提交的问题。 25. **Struts2整合Spring和Hibernate**:Struts2与Spring的整合可以实现依赖注入,与Hibernate的整合则方便进行持久化操作。 以上就是Struts2...
Struts 支持使用 Token 来防止重复提交表单数据。在页面中可以通过 `<a href="mytoken.do"></a>` 的方式指向一个 Action,在该 Action 中保存一个 Token(如 `this.saveToken(request)`),然后在提交表单时验证 ...
Struts提供了一种机制来防止表单重复提交,即通过生成唯一的Token并在每次表单提交时检查该Token的有效性。 ##### 2.Struts应用的国际化 Struts支持通过配置资源文件实现国际化,使应用能够适应不同语言环境。 ##...
15.3 使用令牌防止表单重复提交 313 15.3.1 使用s:token/表单标签 313 15.3.2 令牌拦截器规则的例外 314 15.4 自动显示等待页面 316 15.5 完成CRUD操作的一个动作 317 15.5.1 CRUD 317 15.5.2 拦截器和接口 318 ...
- **防止表单重复提交**:通过使用令牌(token)机制来防止用户的重复提交操作。 - **Struts 验证框架**:Struts 提供了一个强大的验证框架,可以在客户端和服务器端对用户输入进行验证,确保数据的有效性和安全性...
第15章 防止重复提交 252 15.1 标记管理 252 15.2 使用Token拦截器 253 15.3 使用Token Session拦截器 256 15.4 小结 257 第16章 调试与性能分析 258 16.1 debug标签 258 16.2 Debugging拦截器 259 16.3 性能分析 ...
- **Struts2**:解决了Struts1的一些问题,增加了更多高级特性,如拦截器、文件上传等功能。 ##### 3. 为什么要使用Struts2框架 - **简化开发**:提供了丰富的标签库,降低了编码复杂度。 - **易于维护**:MVC模式...