struts实战--添加功能(重点文件上传)

栏目: Struts · 发布时间: 7年前

内容简介:struts实战--添加功能(重点文件上传)

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;

添加的用户信息,除了上传文件的信息,其它的都封装到了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;
	}

以上所述就是小编给大家介绍的《struts实战--添加功能(重点文件上传)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C# Primer Plus

C# Primer Plus

Klaus Michelsen / Sams / 2001-12-15 / USD 49.99

C# Primer Plus is a tutorial based introduction to the C# language and important parts of the .Net Framework. Throughout the book the reader will be exposed to proven principles enabling him to write ......一起来看看 《C# Primer Plus》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具