struts实现添加功能(重点上传)
一.对add.jsp页面上html标签修改----struts2的表单标签
1.性别
原标签
<input type="radio" name="sex" id="sex男" value="男"/><label for="sex男">男</label>
<input type="radio" name="sex" id="sex女" value="女"/><label for="sex女">女</label>
struts2标签:
<s:radio list="{'男','女'}" name="sex" id="sex" value="%{'男'}"/>
2.学历
原标签:
<select name="education" id="education">
<option value=""
selected="selected"
>--选择学历--</option>
<option value="博士">博士</option>
<option value="硕士">硕士</option>
<option value="研究生">研究生</option>
<option value="本科">本科</option>
<option value="专科">专科</option>
<option value="高中">高中</option>
</select>
struts2标签
<s:select list="{'博士','硕士','研究生','本科','专科','高中'}" name="education" id="education" headerKey="" headerValue="--选择学历--"></s:select>
3.兴趣爱好
<s:checkboxlist list="{'看电影','旅游','健身','购物','睡觉'}" name="interest"/>
4.上传
<s:file name="upload" size="30" value="" id="userAction_save_do_upload"/>
5.文本域
<s:textarea name="remark" cols="30" rows="3" id="userAction_save_do_remark" cssStyle="WIDTH: 96%"/>
添加页面:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<HTML>
<HEAD>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<LINK href="${pageContext.request.contextPath}/css/Style.css" type="text/css" rel="stylesheet">
<script language="javascript" src="${pageContext.request.contextPath}/js/public.js"></script>
<script language="javascript" src="${pageContext.request.contextPath}/js/check.js"></script>
<!-- 日期插件,使用jquery -->
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery-1.4.2.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/jquery/jquery.datepick.css" type="text/css">
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery.datepick.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery/jquery.datepick-zh-CN.js"></script>
</HEAD>
<script type="text/javascript">
$(document).ready(function(){
//使用class属性处理 'yy-mm-dd' 设置格式"yyyy/mm/dd"
$('#birthday').datepick({dateFormat: 'yy-mm-dd'});
});
</script>
<body>
<s:form action="user_add" namespace="/" method="post" theme="simple" enctype="multipart/form-data" id="userAction_save_do" name="Form1">
<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
<tr>
<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
height="26">
<strong><STRONG>添加用户</STRONG>
</strong>
<s:fielderror />
<s:debug/>
</td>
</tr>
<tr>
<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
登录名:
</td>
<td class="ta_01" bgColor="#ffffff" colspan="3">
<s:textfield name="logonName" id="userAction_save_do_logonName" cssClass="bg"/>
</td>
</tr>
<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
密码:
</td>
<td class="ta_01" bgColor="#ffffff">
<s:password name="logonPwd" id="logonPwd"/>
</td>
<td align="center" bgColor="#f5fafe" class="ta_01">
用户姓名:
</td>
<td class="ta_01" bgColor="#ffffff">
<s:textfield name="userName" id="userAction_save_do_userName" class="bg"/>
</td>
</tr>
<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
性别:
</td>
<td class="ta_01" bgColor="#ffffff">
<s:radio list="{'男','女'}" name="sex" ></s:radio>
</td>
<td align="center" bgColor="#f5fafe" class="ta_01">
学历:
</td>
<td class="ta_01" bgColor="#ffffff">
<!-- headkey 就是 value属性,headValue 看到的内容,生成select元素第一个option -->
<s:select list="{'博士','硕士','研究生','本科','专科','高中'}" name="education" id="education" headerKey="" headerValue="--选择学历--"></s:select>
</td>
</tr>
<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
出生日期:
</td>
<td class="ta_01" bgColor="#ffffff">
<s:textfield name="birthday" size="20" readonly="true" id="birthday"></s:textfield>
</td>
<td align="center" bgColor="#f5fafe" class="ta_01">
电话:
</td>
<td class="ta_01" bgColor="#ffffff">
<s:textfield name="telephone" id="telephone"></s:textfield>
</td>
</tr>
<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
兴趣爱好:
</td>
<td class="ta_01" bgColor="#ffffff" colSpan="3">
<s:checkboxlist list="{'看电影','旅游','健身','购物','睡觉'}" name="interest" value="%{interest.split(', ')}"></s:checkboxlist>
</td>
</tr>
<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
简历资料:
</td>
<td class="ta_01" bgColor="#ffffff" colSpan="3">
<s:file name="upload" size="30" id="userAction_save_do_upload"/>
</td>
</tr>
<TR>
<TD class="ta_01" align="center" bgColor="#f5fafe">
备注:
</TD>
<TD class="ta_01" bgColor="#ffffff" colSpan="3">
<s:textarea name="remark" cols="30" rows="3" id="userAction_save_do_remark" cssStyle="WIDTH: 96%"></s:textarea>
</TD>
</TR>
<TR>
<td align="center" colSpan="4" class="sep1">
<img src="${pageContext.request.contextPath}/images/shim.gif">
</td>
</TR>
<tr>
<td class="ta_01" style="WIDTH: 100%" align="center"
bgColor="#f5fafe" colSpan="4">
<button type="submit" id="userAction_save_do_submit" name="submit" value="确定" class="button_ok">
确定
</button>
<FONT face="宋体"></FONT>
<button type="reset" value="重置" class="button_cancel">重置</button>
<FONT face="宋体"></FONT>
<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
<span id="Label1"></span>
</td>
</tr>
</table>
</s:form>
</body>
</HTML>
二.添加数据的校验
在UserAction类所在包下创建一个 UserAction-user_add-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="logonName">
<field-validator type="requiredstring">
<message key="logonName.required"></message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">3</param>
<param name="maxLength">12</param>
<message key="logonName.length"></message>
</field-validator>
</field>
<field name="logonPwd">
<field-validator type="requiredstring">
<message key="logonPwd.required"></message>
</field-validator>
</field>
<field name="userName">
<field-validator type="requiredstring">
<message key="userName.required"></message>
</field-validator>
</field>
</validators>
三.完成添加操作(上传)
在UserAction类中需要有一个 private User user=new User();
我们又声明了
private File upload;
private String uploadContentType;
private String uploadFileName;
添加的用户信息,除了上传文件的信息,其它的都封装到了user对象中。
而上传文件信息在三个属性上封装。
对于我们添加用户还需要有下列信息:
userID----->自动增长
path------->人为指定。
简历不允许被浏览器端直接访问。
d:/upload下.
上传简历,保存时的重名问题.
d:/upload/随机名.
filename=真实名
对于我们上面操作,因为多个action在同一个配置中(使用了通配符).
多个请求操作时,可能都需要跳转到input视图。但是它们跳转的页面
不一样,怎样处理?
可以 通过 @InputConfig注解,改为校验失败后 跳转视图
action逻辑:
/**
* 员工添加
*
* @return
* @throws IOException
*/
@InputConfig(resultName = "addINPUT")
public String add() throws IOException {
// 上传简历
if (upload != null) {
String uuidName = UUID.randomUUID().toString();
String path = "/WEB-INF/upload/" + uuidName;
File destFile = new File(ServletActionContext.getServletContext()
.getRealPath(path));
FileUtils.copyFile(upload, destFile);
// 接收员工数据
// 在user 保存 uuid文件路径 和 真实文件名
user.setPath(path);
user.setFilename(uploadFileName);
}
UserService userService = new UserService();
userService.add(user);
return "addSUCCESS";
}
private File upload;
private String uploadContentType;
private String uploadFileName; // 真实文件名
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
分享到:
相关推荐
赠送Maven依赖信息文件:struts2-json-plugin-2.3.24.pom; 包含翻译后的API文档:struts2-json-plugin-2.3.24-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.struts:struts2-json-plugin:2.3.24; ...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
struts2-ssl-plugin-1.2.1.jar
在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖注入(DI)和面向切面编程(AOP)等功能,而 Struts 2 则是一个强大的MVC(Model-View-Controller)框架,负责处理用户请求和业务逻辑。 Struts 2 和 ...
- 动态DOM操作:通过jQuery,可以高效地在页面上添加、修改或删除元素,根据接收到的JSON数据更新UI。 结合这三个组件,开发者可以构建出响应式、动态的Web应用,后端使用Struts 2处理业务逻辑,通过JSON Plugin...
这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列化和反序列化,从而实现与前端的Ajax交互。 Struts2是一个基于Model-View-...
struts2-dojo 跨域时解决拒绝访问的问题
默认的struts2-config-browser-plugin包中的ftl文件include标签路径用的相对路径,会找到包内的include文件,将包内ftl里include的路径改成的/开头的全路径。
struts2-convention-plugin-2.3.15.1.jar
这个版本号2.0.12表明它是2009年发布的,属于Struts2的早期版本,但依然包含了许多基础和关键的功能。 **1. MVC架构** Struts2的核心设计理念是基于MVC模式,它将业务逻辑(Model)、用户界面(View)和控制流程...
在Java Web开发领域,SSM(Spring、Struts2、MyBatis)框架的组合被广泛使用,因其灵活性和强大的功能而备受青睐。本篇文章将深入探讨这个经典组合的集成过程,并以"spring-mybatis-struts2-master"项目为例,解析其...
struts2-jfreechart-plugin-2.1.8.1.jar
struts2-core-2.2.1-sources.jar 源码,学strut2源码时能用到的
除此之外,Struts2还依赖于其他一些库,如OGNL(Object-Graph Navigation Language)用于表达式语言,Freemarker或Velocity用于视图模板,以及各种插件来支持特定的功能,如文件上传、JSON处理等。 在标签中提到了...
struts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jarstruts2-core-2.1.6.jar...
在Struts2中,结合commons-io库,实现文件上传功能。 10. **asm-5.2.jar**:ASM是一个Java字节码操控和分析框架,可以用来动态生成类或者增强已有类的功能。在Struts2中,ASM可能用于字节码级别的操作,例如在运行...
然而,在开发过程中,经常会出现库文件版本不兼容的问题,这可能导致程序运行错误或功能缺失。在给定的标题和描述中,提到的是关于Struts2的JSON插件和相关库的版本问题,以及如何解决这个问题。 首先,我们来看`...
这通常通过Maven或Gradle来完成,将相应的JAR文件添加到项目的类路径中。 - 其次,配置Struts2的核心配置文件(struts.xml),启用插件并指定主题样式。 3. **使用jQuery UI组件** - 插件提供了一系列的标签库,...
在使用Struts2 Spring Plugin时,开发者需要在Struts配置文件(struts.xml)中添加必要的配置,声明插件并指定Spring应用上下文的位置。这样,当Struts2框架处理请求时,它会查找并使用Spring容器中的Action实例。 ...
struts2-core-2.3.15.1.jar