最近做了个用户维护功能,涉及到照片的操作。
照片是存到数据库oracle中的Blob字段中。
难点有两个:
1,图片的上传;2,Blob字段的读取。
先说图片的上传吧,
我使用common-fileupload来实现的
写个servlet,实现上传到服务器。
UpPhotoServlet.java
package org.hd.tempuser.serv;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.hd.util.BlobUtil;
import org.hd.util.RamdomUtil;
public class UpPhotoServlet extends HttpServlet {
public UpPhotoServlet(){
super();
}
public void destroy(){
super.destroy();
}
/**
* Handles GET requests 处理下载请求
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doPost(request, response);
}
/**
* Handles POST requests 处理上传请求
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
//IntoLineService intoLineService = (IntoLineService)ContainerManager.getComponent(IntoLineService.BEAN_ID);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String jobNumber="";
if(request.getParameter("jobNumber")!=null){
jobNumber=request.getParameter("jobNumber").trim();
}
///
final long MAX_SIZE = 6 * 1024 * 1024;// 设置上传文件最大为 3M
final int TEMP_MAX_SIZE = 6 * 1024 * 1024;// 设置上传文件最大为 3M
// 允许上传的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt","doc", "docx", "mp3", "wma", "m4a" };
// 文件上傳部分
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart == true) {
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(TEMP_MAX_SIZE);
factory.setRepository(new File(request.getSession().getServletContext().getRealPath("/") + "StrutsImagesUploadTemp"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(MAX_SIZE);
// 得到所有的表单域,它们目前都被当作FileItem
List<FileItem> fileItems = upload.parseRequest(request);
for(int i=0;i<fileItems.size();i++){
FileItem ff=(FileItem)fileItems.get(i);
if(ff.isFormField()){
// 如果item是正常的表单域
String ffname = ff.getFieldName();
String ffvalue = ff.getString();
if(ffname.trim().equals("gonghao")){
jobNumber=ffvalue;
}
//continue;
}
}
Iterator<FileItem> iter = fileItems.iterator();
if(fileItems==null||fileItems.size()==0){
return;
}
// 依次处理每个表单域
while (iter.hasNext()) {
FileItem item = null;
String path = null;
long size = 0;
item = (FileItem) iter.next();
if(item == null ||item.isFormField()){
// 如果item是正常的表单域
String name = item.getFieldName();
String value = item.getString();
System.out.print("表单域名为:"+name+"表单域值为:"+value);
if(name.trim().equals("gonghao")){
jobNumber=value;
}
//continue;
}else{
// 得到文件的完整路径
// 如果item是文件上传表单域
// 获得文件名及路径
path = item.getName();
size = item.getSize();
if ("".equals(path) || size == 0) {
return;
}
String fileName = item.getName();
System.out.println("item.getName()----"+fileName);
if (fileName != null) {
File fullFile = new File(item.getName());
// 如果文件存在则上传
// if(fullFile.exists()){
// File fileOnServer = new File(BlobUtil.makeDirByParamForOds(jobNumber, BlobUtil.DirTypeTempupload),
// fullFile.getName());
String temprepath=BlobUtil.makeDirByParamForOdsRealPath(jobNumber,BlobUtil.DirTypeTempupload)+BlobUtil.getFileSuffix(fileName);
String temprepathxie=BlobUtil.makeDirByParamForOds(jobNumber,BlobUtil.DirTypeTempupload)+BlobUtil.getFileSuffix(fileName);
String serpp=BlobUtil.BASE_PATH+temprepath;
File fileOnServer = new File(serpp);
//删除已经存在的文件
if(fileOnServer.exists()&&fileOnServer.isFile()){
fileOnServer.delete();
}
item.write(fileOnServer);
String forWrite="\\\\tempphoto"+temprepath;
String forWebShow="/tempphoto"+temprepathxie;
request.getSession().setAttribute("tempupload"+jobNumber, "/tempphoto"+temprepathxie);
// out.write(temprepathxie);
//加参数(随机数)防止浏览器从缓存中读取图片
String ramStr=RamdomUtil.getRamdomDateStr();
String contextpp=request.getContextPath()+"/tempphoto"+temprepathxie+"?randomStr="+ramStr;
String htmlstr=" <img src=\""+contextpp+"\" width=\"75px\" height=\"95px\" id=\"person_img\"/>";
htmlstr+="<script>";
htmlstr+="parent.window.rebackUrl('"+forWebShow+"','"+forWrite+"');";
htmlstr+="";
htmlstr+="";
htmlstr+="";
htmlstr+="</script>";
out.write(htmlstr);
/*
<img src="<%=path%>/resource/images/preson_img.jpg" width="75px" height="95px" id="person_img"/>
*/
System.out.println("文件"+fileOnServer.getName()+"上传成功");
// }
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("the enctype must be multipart/form-data");
}
// 跳回原頁面
// RequestDispatcher dispatcher = request
// .getRequestDispatcher("/web/page/uploadtoserver.jsp");
// dispatcher.forward(request, response);
// return;
//
//out.write("YES");
out.close();
}
}
web.xml配置servlet
<servlet>
<servlet-name>upphoto</servlet-name>
<servlet-class>
org.hd.tempuser.serv.UpPhotoServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>upphoto</servlet-name>
<url-pattern>/upphoto/upphotoServlet</url-pattern>
</servlet-mapping>
要说的有以下几点:
common-fileupload已经帮你读文件了,你做的只是确定要写的文件。
这个你只要获取工程的实际路径并创建相应的目录,对应好文件名即可。
说白了就是你要提供要写的文件的path。
还有一点,文件上传后,使用PrintWriter输出html代码
(response.setContentType("text/html");)
这个html代码就是你上传完后在页面看到的效果,
我加了一段js,可以调用父页面的方法。
注意:照片只是一个字段,为了不让返回的页面整个变化,我使用了iframe。
就是照片的页面在一个iframe中。
所以这就涉及到iframe父子页面传值的问题(怎么传,我的代码已经有例子了。)
另外,上传图片成功后我会把图片的一个url返回给页面以便在页面显示你上传的图片,
这是url后面需要加一个随即参数,不加的话,如果第二次再显示修改后的照片,你会发现
图片的url是正确的(鼠标右键查看),但显示的却是原先的图片!
原因就是浏览器缓存!只要url没有变,浏览器就从缓存中读取图片,所以你加一个随即的参数
让url每次都不一样就可以了,浏览器每次都不从缓存中读。
随机参数随便写,不一样就可以,例如RamdomUtil.java
package org.hd.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class RamdomUtil {
public static String getRamdomIntStr(){
String res="";
Random random1 = new Random();
res=String.valueOf(random1.nextInt()).trim();
return res;
}
public static String getRamdomDateStr(){
String res="";
Date dd=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
res=sdf.format(dd);
return res;
}
public static void main(String[]dsf){
RamdomUtil.getRamdomIntStr();
System.out.println(RamdomUtil.getRamdomDateStr());
}
}
新增用户页面add_user.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="org.hd.tempuser.model.TempUser" %>
<%
String path = request.getContextPath();
%>
<%
String addSuccess = "";
if(request.getAttribute("addSuccess")!=null){
addSuccess=(String)request.getAttribute("addSuccess");
}
%>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />
<script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>
<script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>
<script src="<%=path%>/script/main.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>
<script src="<%=path%>/script/hd/validate.js" type="text/javascript"></script>
</head>
<body style="background:#828282">
<input type="hidden" id="path" value="<%=path%>" />
<input type="hidden" id="addSuccess" value="<%=addSuccess%>" />
<div style="overflow-y:scroll">
<form id="formadd" method="post" action="<%=path%>/tempUser/addTempUser.action">
<input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />
<input type="hidden" id="sex" name="addTempUser.sex" value="" />
<input type="hidden" id="job_level" name="addTempUser.job_level" value="" />
<input type="hidden" id="remark" name="addTempUser.remark" value="" />
<table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">
<tr>
<td class="left" width="6"></td>
<td class="title">新增坐席</td>
</tr>
</table>
<table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody">
<table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td1">账号:</td><td class="td2"><input type="text" name="addTempUser.uname" class="inputbox1" id="uname" style="width:175px;" value=""/></td>
<td class="td1">性别:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakesex" class="blackn12" name="addTempUser.fakesex"><option value=''>...请选择</option><option value='男'>男</option><option value='女'>女</option></select></td>
</tr>
<tr>
<td class="td1">密码:</td><td class="td2"><input type="text" name="addTempUser.upass" class="inputbox1" id="upass" style="width:175px;" value=""/></td>
<td class="td1">姓名:</td><td class="td2"><input type="text" name="addTempUser.realname" class="inputbox1" id="realname" style="width:175px;" value=""/></td>
</tr>
<tr>
<td class="td1">邮件地址:</td><td class="td2"><input type="text" name="addTempUser.email" class="inputbox1" id="email" style="width:175px;" value=""/></td>
<td class="td1">手机号码:</td><td class="td2"><input type="text" name="addTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;" value=""/></td>
</tr>
<tr >
<td class="td1">分机:</td><td class="td2"><input type="text" name="addTempUser.ext" class="inputbox1" id="ext" style="width:175px;" value=""/></td>
<td class="td1">电话:</td><td class="td2"><input type="text" name="addTempUser.phone" class="inputbox1" id="phone" style="width:175px;" value=""/></td>
</tr>
<tr>
<td class="td1">职级:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakejob_level" class="blackn12" name="addTempUser.fakejob_level"><option value=''>...请选择</option><option value='坐席'>坐席</option><option value='坐席班长'>坐席班长</option></select></td>
<td class="td1"></td>
<td class="td2">
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div style="background:#f3f3f3">
<table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>
<td style="height:50px;width:50px;text-align:left;">
<textarea rows="3" cols="26" name="addTempUser.fakeremark" id="fakeremark" >
</textarea>
</td>
<td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>
<td style="height:50px;text-align:left;">
<iframe src="<%=path%>/jsp/hd/home/usermanage/photo.jsp" name="photoframe" width="300px" height="100px" scrolling="auto">
</iframe>
</td>
</tr>
</table>
</div>
<div style="background:#ffffff;padding-top:20px;">
<table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td style="width:20%;text-align:right;padding-right:12px;">
</td>
<td style="width:20%;text-align:right;padding-right:20px;">
<input type="button" value="提交" οnclick="tijiao()" />
</td>
<td style="width:30%;text-align:left;padding-left:35px;">
<input type="button" value="取消" οnclick="cancelBack()" />
</td>
<td style="width:30%;text-align:left;padding-left:12px;">
</td>
</tr>
</table>
</div>
<table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td2"></td>
<td class="td2">
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td class="left" width="7"></td>
<td class="mid"></td>
<td class="right" width="7"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<script>
var path=document.getElementById("path").value;
var addSuccess=document.getElementById("addSuccess").value;
if($.trim(addSuccess)=="addSuccess"){
//alert("addSuccess");
var urlpath=path+"/tempUser/listTempUser.action";
window.location.href=urlpath;
}
function cancelBack(){
var urlpath=path+"/tempUser/listTempUser.action";
window.location.href=urlpath;
}
function testformsubmit(){
var testform=document.getElementById("testform");
testform.submit();
}
function getUploadPhotoUrl(){
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
function addTempUser(){
var urlpath=path+"/tempUser/addTempUser.action";
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
function tijiao(){
$("#sex").val($("#fakesex").val());
$("#job_level").val($("#fakejob_level").val());
$("#remark").val($("#fakeremark").val());
//alert($("#sex").val()+$("#job_level").val()+$("#remark").val());
if (validateAddTempUser()) {
$('#formadd').submit();
}
}
function validateAddTempUser(){
var flag=true;//成功为true
var alertStr="";
var uname=$('#uname').val();
var upass=$('#upass').val();
var realname=$('#realname').val();
var email=$('#email').val();
var cellphone=$('#cellphone').val();
var ext=$('#ext').val();
var phone=$('#phone').val();
var job_level=$('#fakejob_level').val();
var remark=$('#remark').val();
var sex=$("#fakesex").val();
var localPhotoUrl=$("#localPhotoUrl").val();
if(ValidateUtil.isNull(uname)){
flag=false;
alertStr+="账号不可为空!\r\n";
}
if(ValidateUtil.isNull(sex)){
flag=false;
alertStr+="请选择性别!\r\n";
}
if(ValidateUtil.isNull(job_level)){
flag=false;
alertStr+="请选择职级!\r\n";
}
if(ValidateUtil.isNull(localPhotoUrl)){
flag=false;
alertStr+="请上传照片!\r\n";
}
if(!flag){
alert(alertStr);
}
return flag;
}
/*
var isRightUploadPhotoFalg=false;
function shangchuan(){
isRightUploadPhotoFalg=false;
var photoUrl = document.getElementById("uploadPhoto").value;
var jobNumber=$('#uname').val();
var urlpath=path+"/tempUser/uploadPhotoToTempDir.action?photoUrl="+photoUrl+"&jobNumber="+jobNumber;
var tempUrl="";
$.ajax({
type: "POST",
url: urlpath,
success: function(msg){
var mm=$.trim(msg);
if(msg=="NO"){
}else{
tempUrl=path+mm;
//js换图片
var hhtt="<img src=\""+tempUrl+"\" id=\"tempPhotoFileUrl\"/>";
$("#uploadPhotoView").html(hhtt);
//uploadPhotoViewParent
$("#uploadPhotoViewParent").html("");
$("#uploadPhotoViewParent").hide();
isRightUploadPhotoFalg=true;
alert(mm);
document.getElementById("localPhotoUrl").value=mm;
}
}
});
}
function strutsUpload(){
alert("strutsUpload");
var strutsFormPhoto=document.getElementById("strutsFormPhoto");
strutsFormPhoto.submit();
}
*/
$("#uname").blur( function () {
//给子页面赋值
var jobnum=document.getElementById("uname").value;
window.frames[0].window.receivJobNum(jobnum);
} );
function tt(){
alert("tt");
}
//上传成功后,需要页面显示图片的web路径和在服务器上的路径
function rebackUrl(showurl,writeurl){
//alert(showurl+"--"+writeurl);
document.getElementById("localPhotoUrl").value=writeurl;
}
</script>
里面嵌套的照片页面photo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="org.hd.tempuser.model.TempUser" %>
<%
String path = request.getContextPath();
%>
<%
String addSuccess = "";
if(request.getAttribute("addSuccess")!=null){
addSuccess=(String)request.getAttribute("addSuccess");
}
%>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />
<script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>
</head>
<body style="background:#f3f3f3">
<input type="hidden" id="path" value="<%=path%>" />
请上传图片
<form id="testform" action="<%=path%>/upphoto/upphotoServlet" method="post" enctype="multipart/form-data">
<input type="file" id="testfile" name="uploadPhoto" class="inputbox1" style="width:175px;" value=""/>
<input type="hidden" id="gonghao" name="gonghao" value=""/>
<input type="hidden" id="jobNumberTest" name="jobNumberTest" value="gh.value"/>
<input type="button" value="上传" οnclick="testformsubmit()" />
</form>
</body>
</html>
<script>
var path=document.getElementById("path").value;
function testformsubmit(){
var testform=document.getElementById("testform");
var gonghao=document.getElementById("gonghao").value;
if(gonghao==null||gonghao==""||gonghao=="null"){
alert("请先输入账号!");
}else{
testform.submit();
}
}
function gg(){
//调用父页面方法
parent.window.tt();
}
function receivJobNum(jobnum){
document.getElementById("gonghao").value=jobnum;
}
</script>
编辑用户的时候也需要编辑照片,但这个逻辑稍稍不一样,还是一个编辑页面,iframe中嵌套一个照片页面。
user_edit.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="org.hd.tempuser.model.TempUser" %>
<%
String path = request.getContextPath();
%>
<%
String tempuserid="";
if(request.getParameter("tempuserid")!=null){
tempuserid=(String)request.getParameter("tempuserid");
}
String editSuccess = "";
if(request.getAttribute("editSuccess")!=null){
editSuccess=(String)request.getAttribute("editSuccess");
}
%>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />
<script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>
<script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>
<script src="<%=path%>/script/main.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>
<script src="<%=path%>/script/hd/validate.js" type="text/javascript"></script>
</head>
<body style="background:#828282">
<input type="hidden" id="path" value="<%=path%>" />
<input type="hidden" id="tempuserid" value="<%=tempuserid%>" />
<input type="hidden" id="editSuccess" value="<%=editSuccess%>" />
<form id="formedit" method="post" action="<%=path%>/tempUser/submitEditTempUser.action">
<input type="hidden" id="ischangePhoto" name="ischangePhoto" value="NO" />
<input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />
<input type="hidden" id="oldlocalPhotoUrl" name="oldlocalPhotoUrl" value="<s:property value='#request.editTempUser.tempUrl.trim()'/> " />
<input type="hidden" id="hduid" name="editTempUser.hduid" value="<s:property value='#request.editTempUser.hduid.trim()'/> " />
<input type="hidden" id="sex" name="editTempUser.sex" value="" />
<input type="hidden" id="job_level" name="editTempUser.job_level" value="" />
<input type="hidden" id="remark" name="editTempUser.remark" value="" />
<!-- 临时转换值 -->
<input type="hidden" id="tempsex" value="<s:property value='#request.editTempUser.sex'/>" />
<input type="hidden" id="tempjob_level" value="<s:property value='#request.editTempUser.job_level'/>" />
<table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">
<tr>
<td class="left" width="6"></td>
<td class="title">编辑坐席信息</td>
</tr>
</table>
<table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody">
<table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td1">账号:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.uname'/> " name="editTempUser.uname" class="inputbox1" id="uname" style="width:175px;" </td>
<td class="td1">性别:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakesex" class="blackn12" name="editTempUser.fake"><option value=''>...请选择</option><option value='男'>男</option><option value='女'>女</option></select></td>
</tr>
<tr>
<td class="td1">密码:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.upass'/>" name="editTempUser.upass" class="inputbox1" id="upass" style="width:175px;" </td>
<td class="td1">姓名:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.realname'/>" name="editTempUser.realname" class="inputbox1" id="realname" style="width:175px;" </td>
</tr>
<tr>
<td class="td1">邮件地址:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.email'/>" name="editTempUser.email" class="inputbox1" id="email" style="width:175px;" </td>
<td class="td1">手机号码:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.cellphone'/>" name="editTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;" </td>
</tr>
<tr >
<td class="td1">分机:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.ext'/>" name="editTempUser.ext" class="inputbox1" id="ext" style="width:175px;" </td>
<td class="td1">电话:</td><td class="td2"><input type="text" value="<s:property value='#request.editTempUser.phone'/>" name="editTempUser.phone" class="inputbox1" id="phone" style="width:175px;" </td>
</tr>
<tr>
<td class="td1">职级:</td><td class="td2"><select style="width: 178px; height: 21px" id="fakejob_level" class="blackn12" name="editTempUser.fake"><option value=''>...请选择</option><option value='坐席'>坐席</option><option value='坐席班长'>坐席班长</option></select></td>
<td class="td1"></td><td class="td2"></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div style="background:#f3f3f3">
<table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>
<td style="height:50px;width:50px;text-align:left;">
<textarea rows="3" cols="26" name="editTempUser.fakeremark" id="fakeremark" >
<s:property value='#request.editTempUser.remark'/>
</textarea>
</td>
<td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>
<td style="height:50px;text-align:left;">
<div id="photoshow" >
<img src="<%=path%><s:property value='#request.editTempUser.tempUrl'/>" width="75px" height="95px" id="person_img"/>
<input type="button" οnclick="editPhotoFunc()" value="编辑照片" />
</div>
<div id="photoiframe" style="background:#f3f3f3;display:none">
<iframe src="<%=path%>/jsp/hd/home/usermanage/editphoto.jsp" name="photoframe" width="300px" height="100px" scrolling="auto">
</iframe>
</div>
</td>
</tr>
</table>
</div>
<div style="background:#ffffff;padding-top:20px;">
<table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td style="width:20%;text-align:right;padding-right:12px;">
</td>
<td style="width:20%;text-align:right;padding-right:20px;">
<input type="button" value="提交" οnclick="tijiao()" />
</td>
<td style="width:30%;text-align:left;padding-left:35px;">
<input type="button" value="返回" οnclick="javascript:history.back(-1);" />
</td>
<td style="width:30%;text-align:left;padding-left:12px;">
</td>
</tr>
</table>
</div>
<table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td2"></td>
<td class="td2">
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td class="left" width="7"></td>
<td class="mid"></td>
<td class="right" width="7"></td>
</tr>
</table>
</form>
</body>
</html>
<script>
var path=document.getElementById("path").value;
var editSuccess=document.getElementById("editSuccess").value;
if($.trim(editSuccess)=="editSuccess"){
//alert("editSuccess");
var urlpath=path+"/tempUser/listTempUser.action";
window.location.href=urlpath;
}
//下拉框赋值
var sexone=$.trim($("#tempsex").val());
setSelectValue('fakesex',sexone);
var jobone=$.trim($("#tempjob_level").val());
setSelectValue('fakejob_level',jobone);
function setSelectValue(sid,va){
var strva=$.trim(va);
var opt = document.getElementById(sid);
for (var i = 0; i < opt.length; i++) {
if($.trim(opt[i].innerText)==strva){
opt.options[i].selected=true;
}
}
}
function editPhotoFunc(){
$("#photoiframe").show();
$("#photoshow").hide();
}
function cancelEditPhotoFunc(){
$("#photoshow").show();
$("#photoiframe").hide();
}
function testformsubmit(){
var testform=document.getElementById("testform");
testform.submit();
}
function tijiao(){
var ssxx=$.trim($("#fakesex").val());
$("#sex").val(ssxx);
var jobll=$.trim($("#fakejob_level").val());
$("#job_level").val(jobll);
var fakrem=$.trim($("#fakeremark").val());
$("#remark").val(fakrem);
//alert($("#sex").val()+$("#job_level").val()+$("#remark").val());
if (validateAddTempUser()) {
$('#formedit').submit();
}
}
function validateAddTempUser(){
var flag=true;//成功为true
var alertStr="";
var uname=$('#uname').val();
var upass=$('#upass').val();
var realname=$('#realname').val();
var email=$('#email').val();
var cellphone=$('#cellphone').val();
var ext=$('#ext').val();
var phone=$('#phone').val();
var job_level=$('#fakejob_level').val();
var remark=$('#remark').val();
var sex=$("#fakesex").val();
var localPhotoUrl=$("#localPhotoUrl").val();
var ischangePhoto=$.trim($("#ischangePhoto").val());
if(ValidateUtil.isNull(uname)){
flag=false;
alertStr+="账号不可为空!\r\n";
}
if(ValidateUtil.isNull(sex)){
flag=false;
alertStr+="请选择性别!\r\n";
}
if(ValidateUtil.isNull(job_level)){
flag=false;
alertStr+="请选择职级!\r\n";
}
if(ischangePhoto=="YES"){
var local=$.trim($("#localPhotoUrl").val());
if(local==""){
alertStr+="请上传照片!\r\n";
}
}else{
document.getElementById("localPhotoUrl").value=document.getElementById("oldlocalPhotoUrl").value;
}
if(!flag){
alert(alertStr);
}
return flag;
}
$("#uname").blur( function () {
//给子页面赋值
var jobnum=document.getElementById("uname").value;
window.frames[0].window.receivJobNum(jobnum);
} );
//给子页面赋值,这个是为了子页面调用
function geivUnameToChild(){
var jobnum=document.getElementById("uname").value;
window.frames[0].window.receivJobNum(jobnum);
}
function tt(){
alert("tt");
}
//上传成功后,需要页面显示图片的web路径和在服务器上的路径
function rebackUrl(showurl,writeurl){
//alert(showurl+"--"+writeurl);
$("#ischangePhoto").val("YES");
document.getElementById("localPhotoUrl").value=writeurl;
//刷新子页面
}
</script>
editphoto.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="org.hd.tempuser.model.TempUser" %>
<%
String path = request.getContextPath();
%>
<%
String addSuccess = "";
if(request.getAttribute("addSuccess")!=null){
addSuccess=(String)request.getAttribute("addSuccess");
}
%>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />
<script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>
</head>
<body style="background:#f3f3f3">
<input type="hidden" id="path" value="<%=path%>" />
请上传图片
<form id="testform" action="<%=path%>/upphoto/upphotoServlet" method="post" enctype="multipart/form-data">
<input type="file" id="testfile" name="uploadPhoto" class="inputbox1" style="width:175px;" value=""/>
<input type="hidden" id="gonghao" name="gonghao" value=""/>
<input type="hidden" id="jobNumberTest" name="jobNumberTest" value="gh.value"/>
<input type="button" value="上传" οnclick="testformsubmit()" />
<input type="button" value="取消" οnclick="cancelPhoto()" />
</form>
</body>
</html>
<script>
var path=document.getElementById("path").value;
//获取工号
parent.window.geivUnameToChild();
function testformsubmit(){
var testform=document.getElementById("testform");
var gonghao=document.getElementById("gonghao").value;
if(gonghao==null||gonghao==""||gonghao=="null"){
alert("请先输入账号!");
}else{
testform.submit();
}
}
function gg(){
//调用父页面方法
parent.window.tt();
}
function receivJobNum(jobnum){
document.getElementById("gonghao").value=jobnum;
}
function cancelPhoto(){
parent.window.cancelEditPhotoFunc();
}
</script>
user_view.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ page import="org.hd.tempuser.model.TempUser" %>
<%
String path = request.getContextPath();
%>
<%
String tempuserid="";
if(request.getParameter("tempuserid")!=null){
tempuserid=(String)request.getParameter("tempuserid");
}
%>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=path%>/resource/css/style.css" rel="stylesheet" type="text/css" />
<script src="<%=path%>/script/jquery-1.7.1.js" type="text/javascript"></script>
<script src="<%=path%>/script/queryHeader.js" type="text/javascript"></script>
<script src="<%=path%>/script/main.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/plugin_core.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar_util.js" type="text/javascript"></script>
<script src="<%=path%>/script/plugin/calendar/calendar.js" type="text/javascript"></script>
</head>
<body style="background:#828282">
<input type="hidden" id="path" value="<%=path%>" />
<input type="hidden" id="tempuserid" value="<%=tempuserid%>" />
<form id="formadd" method="post" action="<%=path%>/tempUser/viewTempUser.action">
<input type="hidden" id="localPhotoUrl" name="localPhotoUrl" value="" />
<table width="100%" height="30" border="0" cellspacing="0" cellpadding="0" id="box_title">
<tr>
<td class="left" width="6"></td>
<td class="title">详细信息</td>
</tr>
</table>
<table width="100%" height="160px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody">
<table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td1">账号:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.uname'/> " name="viewTempUser.uname" class="inputbox1" id="uname" style="width:175px;" /></td>
<td class="td1">性别:</td><td class="td2">
<input type="text" disabled readonly value="<s:property value='#request.viewTempUser.sex'/> " name="viewTempUser.sex" class="inputbox1" id="sex" style="width:175px;" />
</td>
</tr>
<tr>
<td class="td1">密码:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.upass'/>" name="viewTempUser.upass" class="inputbox1" id="upass" style="width:175px;" /></td>
<td class="td1">姓名:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.realname'/>" name="viewTempUser.realname" class="inputbox1" id="realname" style="width:175px;" /></td>
</tr>
<tr>
<td class="td1">邮件地址:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.email'/>" name="viewTempUser.email" class="inputbox1" id="email" style="width:175px;" /></td>
<td class="td1">手机号码:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.cellphone'/>" name="viewTempUser.cellphone" class="inputbox1" id="cellphone" style="width:175px;"/> </td>
</tr>
<tr >
<td class="td1">分机:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.ext'/>" name="viewTempUser.ext" class="inputbox1" id="ext" style="width:175px;" /></td>
<td class="td1">电话:</td><td class="td2"><input type="text" disabled readonly value="<s:property value='#request.viewTempUser.phone'/>" name="viewTempUser.phone" class="inputbox1" id="phone" style="width:175px;" /></td>
</tr>
<tr>
<td class="td1">职级:</td><td class="td2">
<input type="text" disabled readonly value="<s:property value='#request.viewTempUser.job_level'/> " name="viewTempUser.job_level" class="inputbox1" id="job_level" style="width:175px;" />
</td>
<td class="td1"></td><td class="td2"></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div style="background:#f3f3f3">
<table width="100%" height="50px" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td style="height:50px;width:160px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">备注:</td>
<td style="height:50px;width:50px;text-align:left;">
<textarea disabled readonly rows="3" cols="26" name="addTempUser.fakeremark" id="fakeremark" >
<s:property value='#request.viewTempUser.remark'/>
</textarea>
</td>
<td style="height:50px;width:80px;text-align:right;padding-right:12px;font-size:12px; color:#333; ">照片:</td>
<td style="height:50px;text-align:left;">
<img src="<%=path%><s:property value='#request.viewTempUser.tempUrl'/>" width="75px" height="95px" id="person_img"/>
</td>
</tr>
</table>
</div>
<div style="background:#ffffff;padding-top:20px;">
<table width="100%" height="30px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td style="width:20%;text-align:right;padding-right:12px;">
</td>
<td style="width:20%;text-align:right;padding-right:20px;">
</td>
<td style="width:30%;text-align:left;padding-left:35px;">
<input type="button" value="返回" οnclick="javascript:history.back(-1);" />
</td>
<td style="width:30%;text-align:left;padding-left:12px;">
</td>
</tr>
</table>
</div>
<table width="100%" height="50px" border="0" cellspacing="0" cellpadding="0" class="nbox11" style="padding-left:6px">
<tr>
<td>
<div class="contentBody"><table class="nbox14 blackn12" border="0" cellspacing="0" cellpadding="0" width="800px">
<tr >
<td class="td2"></td>
<td class="td2">
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" id="box_foot">
<tr>
<td class="left" width="7"></td>
<td class="mid"></td>
<td class="right" width="7"></td>
</tr>
</table>
</form>
</body>
</html>
<script>
var path=document.getElementById("path").value;
</script>
要说的有几点,编辑用户可能修改照片,可能不修改。
我分了这两种情况。用一个参数来区别。
下面是所有action
AddTempUserAction.java
package org.hd.tempuser.action;
import java.io.PrintWriter;
import java.sql.Blob;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.sql.BLOB;
import org.apache.struts2.ServletActionContext;
import org.hd.tempuser.model.TempUser;
import org.hd.tempuser.service.TempUserService;
import org.hd.util.BlobUtil;
import org.hibernate.SessionFactory;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.hibernate.ConfigurableSessionFactoryBean;
import org.rd.framework.query.sort.SortCriterion;
import org.rd.framework.struts.action.CommonAction;
import org.hibernate.impl.SessionFactoryImpl;
import com.opensymphony.xwork2.ActionContext;
public class AddTempUserAction extends CommonAction{
private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);
private TempUser addTempUser;
private String localPhotoUrl="";
public String addTempUser() throws Exception{
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
if(getAddTempUser()!=null){
if(getLocalPhotoUrl()==null||getLocalPhotoUrl().trim().equals("")){
}else{
System.out.println("临时上传路径:"+getLocalPhotoUrl());
String loginUserJobNum=this.getLoginUserJobNumber();
tempUserService.addTempUserWriteBlob(getAddTempUser(),getLocalPhotoUrl(),loginUserJobNum);
}
}
out.println("YES");
request.setAttribute("addSuccess", "addSuccess");
return SUCCESS;
}
public String execute() throws Exception{
return SUCCESS;
}
public TempUser getAddTempUser() {
return addTempUser;
}
public void setAddTempUser(TempUser addTempUser) {
this.addTempUser = addTempUser;
}
public String getLocalPhotoUrl() {
return localPhotoUrl;
}
public void setLocalPhotoUrl(String localPhotoUrl) {
this.localPhotoUrl = localPhotoUrl;
}
}
DelTempUserAction.java
package org.hd.tempuser.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.hd.tempuser.model.TempUser;
import org.hd.tempuser.service.TempUserService;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.query.interceptor.QueryParameterAware;
import org.rd.framework.query.sort.SortCriterion;
import org.rd.framework.struts.action.BodyListAction;
import org.rd.framework.util.DateUtils;
import com.opensymphony.xwork2.ActionContext;
public class DelTempUserAction extends BodyListAction implements QueryParameterAware{
private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);
private String tempuserid="";
private TempUser delTempUser=null;
public String delTempUser() throws Exception{
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
// setTempuserid(request.getParameter("tempuserid"));
if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){
tempUserService.delTempUserById(request.getParameter("tempuserid"));
out.println("YES");
}else{
out.println("NO");
}
return NONE;
}
public String execute() throws Exception{
return SUCCESS;
}
public String getTempuserid() {
return tempuserid;
}
public void setTempuserid(String tempuserid) {
this.tempuserid = tempuserid;
}
public TempUser getDelTempUser() {
return delTempUser;
}
public void setDelTempUser(TempUser delTempUser) {
this.delTempUser = delTempUser;
}
}
EditTempUserAction.java
package org.hd.tempuser.action;
import java.io.PrintWriter;
import java.sql.Blob;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.sql.BLOB;
import org.apache.struts2.ServletActionContext;
import org.hd.login.service.LoginService;
import org.hd.tempuser.model.TempUser;
import org.hd.tempuser.service.TempUserService;
import org.hd.util.BlobUtil;
import org.hd.util.RamdomUtil;
import org.hibernate.SessionFactory;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.hibernate.ConfigurableSessionFactoryBean;
import org.rd.framework.query.sort.SortCriterion;
import org.rd.framework.struts.action.CommonAction;
import org.hibernate.impl.SessionFactoryImpl;
import com.opensymphony.xwork2.ActionContext;
public class EditTempUserAction extends CommonAction{
private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);
private LoginService hdLoginService = (LoginService)ContainerManager.getComponent(LoginService.BEAN_ID);
private TempUser editTempUser;
private String localPhotoUrl="";
private String ischangePhoto="";
public String editTempUser() throws Exception{
//先取数据展现
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){
TempUser tt=tempUserService.getTempUserById(request.getParameter("tempuserid"));
String photoPath=hdLoginService.getTempPhoto(tt);
photoPath+="?randomStr="+RamdomUtil.getRamdomDateStr();//加随机参数
tt.setTempUrl(photoPath);
setEditTempUser(tt);
}else{
}
return SUCCESS;
}
public String submitEditTempUser() throws Exception{
//提交数据
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
if(getEditTempUser()!=null){
String hduid=getEditTempUser().getHduid().trim();
getEditTempUser().setHduid(hduid);
String loginUserJobNum=this.getLoginUserJobNumber();
if(getIschangePhoto()!=null&&getIschangePhoto().trim().equals("YES")){
//修改照片
if(getLocalPhotoUrl()==null||getLocalPhotoUrl().trim().equals("")){
} else {
System.out.println("临时上传路径:" + getLocalPhotoUrl());
tempUserService.clearPhotoBlob(getEditTempUser());
tempUserService.editTempUserWriteBlob(getEditTempUser(),
getLocalPhotoUrl(), loginUserJobNum);
}
}else{
//不修改照片
tempUserService.editTempUserWithoutBlob(getEditTempUser(), loginUserJobNum);
}
request.setAttribute("editSuccess", "editSuccess");
}
return SUCCESS;
}
public String execute() throws Exception{
return SUCCESS;
}
public String getLocalPhotoUrl() {
return localPhotoUrl;
}
public void setLocalPhotoUrl(String localPhotoUrl) {
this.localPhotoUrl = localPhotoUrl;
}
public TempUser getEditTempUser() {
return editTempUser;
}
public void setEditTempUser(TempUser editTempUser) {
this.editTempUser = editTempUser;
}
public String getIschangePhoto() {
return ischangePhoto;
}
public void setIschangePhoto(String ischangePhoto) {
this.ischangePhoto = ischangePhoto;
}
}
ListTempUserAction.java
package org.hd.tempuser.action;
import org.hd.tempuser.service.TempUserService;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.query.interceptor.QueryParameterAware;
import org.rd.framework.query.sort.SortCriterion;
import org.rd.framework.struts.action.BodyListAction;
import org.rd.framework.util.DateUtils;
public class ListTempUserAction extends BodyListAction implements QueryParameterAware{
private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);
public String listTempUser() throws Exception{
if (firstSorter == null && null == paginationSupport.getSorter()) {
firstSorter = new SortCriterion();
firstSorter.setField("queryby.hduid");
firstSorter.setOrder(SortCriterion.DESCENDING);
}else if(firstSorter == null && paginationSupport.getSorter() != null){
firstSorter = paginationSupport.getSorter();
}
paginationSupport.setSorter(firstSorter);
bodyList = tempUserService.getTempUserList(queryParams, paginationSupport);
return SUCCESS;
}
public String execute() throws Exception{
return SUCCESS;
}
public String getTableid() {
return "HD_USER_000";
}
}
ViewTempUserAction.java
package org.hd.tempuser.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.hd.login.service.LoginService;
import org.hd.tempuser.model.TempUser;
import org.hd.tempuser.service.TempUserService;
import org.hd.util.RamdomUtil;
import org.rd.framework.common.container.ContainerManager;
import org.rd.framework.query.interceptor.QueryParameterAware;
import org.rd.framework.query.sort.SortCriterion;
import org.rd.framework.struts.action.BodyListAction;
import org.rd.framework.util.DateUtils;
import com.opensymphony.xwork2.ActionContext;
public class ViewTempUserAction extends BodyListAction implements QueryParameterAware{
private TempUserService tempUserService = (TempUserService)ContainerManager.getComponent(TempUserService.BEAN_ID);
private LoginService hdLoginService = (LoginService)ContainerManager.getComponent(LoginService.BEAN_ID);
private TempUser viewTempUser=null;
private String command="";
public String viewTempUser() throws Exception{
ActionContext ctx = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
if(request.getParameter("tempuserid")!=null&&!request.getParameter("tempuserid").trim().equals("")){
TempUser tt=tempUserService.getTempUserById(request.getParameter("tempuserid"));
String photoPath=hdLoginService.getTempPhoto(tt);
photoPath+="?randomStr="+RamdomUtil.getRamdomDateStr();//加随机参数
tt.setTempUrl(photoPath);
setViewTempUser(tt);
}else{
}
return SUCCESS;
}
public String execute() throws Exception{
return SUCCESS;
}
public TempUser getViewTempUser() {
return viewTempUser;
}
public void setViewTempUser(TempUser viewTempUser) {
this.viewTempUser = viewTempUser;
}
public String getCommand() {
return command;
}
public void setCommand(String command) {
this.command = command;
}
}
struts_tempuser.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="tempUser" extends="cx-struts-default" namespace="/tempUser">
<action name="listTempUser" class="org.hd.tempuser.action.ListTempUserAction" method="listTempUser">
<result name="success">/jsp/hd/home/usermanage/uesrs.jsp</result>
</action>
<action name="delTempUser" class="org.hd.tempuser.action.DelTempUserAction" method="delTempUser">
</action>
<action name="addTempUser" class="org.hd.tempuser.action.AddTempUserAction" method="addTempUser">
<result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>
</action>
<action name="viewTempUser" class="org.hd.tempuser.action.ViewTempUserAction" method="viewTempUser">
<result name="success">/jsp/hd/home/usermanage/user_view.jsp</result>
</action>
<action name="editTempUser" class="org.hd.tempuser.action.EditTempUserAction" method="editTempUser">
<result name="success">/jsp/hd/home/usermanage/user_edit.jsp</result>
</action>
<action name="submitEditTempUser" class="org.hd.tempuser.action.EditTempUserAction" method="submitEditTempUser">
<result name="success">/jsp/hd/home/usermanage/user_edit.jsp</result>
</action>
<action name="uploadPhotoToTempDir" class="org.hd.tempuser.action.UploadPhotoAction" method="uploadPhotoToTempDir">
</action>
<action name="uploadWithStruts" class="org.hd.tempuser.action.UploadWithStrutsAction" method="uploadWithStruts">
<!-- 限制图片的格式和图片的大小 -->
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg
</param>
<param name="maximumSize">102400</param>
</interceptor-ref>
<!-- 默认的拦截器,必须要写 -->
<interceptor-ref name="defaultStack" />
<result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>
</action>
<action name="goPageuploadWithStruts" class="org.hd.tempuser.action.UploadWithStrutsAction">
<result name="success">/jsp/hd/home/usermanage/add_user.jsp</result>
</action>
</package>
</struts>
至于读取blob,看第二篇文章吧