内容简介: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实战--添加功能(重点文件上传)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Flutter 实战之从 0 搭建「网易云音乐」App(一):创建项目、添加插件、通用代码
- 主动模式和被动模式,添加监控主机,添加自定义模板,处理图像中的乱码,自动发现
- 苹果将为 Mac 添加 Face ID,为 Magic Keyboard 添加 Touch Bar
- android – 为什么AOSP添加新的API来支持库而不添加到SDK?
- [Framework] 添加系统服务
- go imports添加
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。