`
SIHAIloveYAN
  • 浏览: 119930 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

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;
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;
	}



分享到:
评论

相关推荐

    struts2-json-plugin-2.3.24-API文档-中文版.zip

    赠送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.rar

    Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...

    struts2-ssl-plugin-1.2.1.jar

    struts2-ssl-plugin-1.2.1.jar

    struts2-spring-plugin-2.3.4.jar

    在Java Web开发中,这两个框架经常一起使用,Spring 提供了依赖注入(DI)和面向切面编程(AOP)等功能,而 Struts 2 则是一个强大的MVC(Model-View-Controller)框架,负责处理用户请求和业务逻辑。 Struts 2 和 ...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    - 动态DOM操作:通过jQuery,可以高效地在页面上添加、修改或删除元素,根据接收到的JSON数据更新UI。 结合这三个组件,开发者可以构建出响应式、动态的Web应用,后端使用Struts 2处理业务逻辑,通过JSON Plugin...

    struts2-json-plugin-2.3.8.jar

    这个插件主要的功能是让Struts2应用程序能够轻松地处理JSON(JavaScript Object Notation)数据格式,使得Web应用可以方便地进行JSON序列化和反序列化,从而实现与前端的Ajax交互。 Struts2是一个基于Model-View-...

    struts2-dojo-plugin-2.1.8.jar

    struts2-dojo 跨域时解决拒绝访问的问题

    struts2-config-browser-plugin-2.3.28-hjx20200915.jar

    默认的struts2-config-browser-plugin包中的ftl文件include标签路径用的相对路径,会找到包内的include文件,将包内ftl里include的路径改成的/开头的全路径。

    struts2-convention-plugin-2.3.15.1.jar

    struts2-convention-plugin-2.3.15.1.jar

    struts2-core-2.0.12.jar

    这个版本号2.0.12表明它是2009年发布的,属于Struts2的早期版本,但依然包含了许多基础和关键的功能。 **1. MVC架构** Struts2的核心设计理念是基于MVC模式,它将业务逻辑(Model)、用户界面(View)和控制流程...

    spring-mybatis-struts2-master ——demo

    在Java Web开发领域,SSM(Spring、Struts2、MyBatis)框架的组合被广泛使用,因其灵活性和强大的功能而备受青睐。本篇文章将深入探讨这个经典组合的集成过程,并以"spring-mybatis-struts2-master"项目为例,解析其...

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-core-2.2.1-sources.jar

    struts2-core-2.2.1-sources.jar 源码,学strut2源码时能用到的

    struts-2.5.22-all.zip

    除此之外,Struts2还依赖于其他一些库,如OGNL(Object-Graph Navigation Language)用于表达式语言,Freemarker或Velocity用于视图模板,以及各种插件来支持特定的功能,如文件上传、JSON处理等。 在标签中提到了...

    struts2-core-2.1.6.jar

    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...

    struts-2.5.14-最核心的文件jar

    在Struts2中,结合commons-io库,实现文件上传功能。 10. **asm-5.2.jar**:ASM是一个Java字节码操控和分析框架,可以用来动态生成类或者增强已有类的功能。在Struts2中,ASM可能用于字节码级别的操作,例如在运行...

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    然而,在开发过程中,经常会出现库文件版本不兼容的问题,这可能导致程序运行错误或功能缺失。在给定的标题和描述中,提到的是关于Struts2的JSON插件和相关库的版本问题,以及如何解决这个问题。 首先,我们来看`...

    struts2-jquery-plugin使用手册,自己写的

    这通常通过Maven或Gradle来完成,将相应的JAR文件添加到项目的类路径中。 - 其次,配置Struts2的核心配置文件(struts.xml),启用插件并指定主题样式。 3. **使用jQuery UI组件** - 插件提供了一系列的标签库,...

    SSH\\others\\struts2-spring-plugin-2.2.1.jar

    在使用Struts2 Spring Plugin时,开发者需要在Struts配置文件(struts.xml)中添加必要的配置,声明插件并指定Spring应用上下文的位置。这样,当Struts2框架处理请求时,它会查找并使用Spring容器中的Action实例。 ...

    struts2-core-2.3.15.1.jar

    struts2-core-2.3.15.1.jar

Global site tag (gtag.js) - Google Analytics