博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts的结果集和应用(验证码生成,图片下载)
阅读量:6073 次
发布时间:2019-06-20

本文共 8182 字,大约阅读时间需要 27 分钟。

结果集:

//全局结果  源码:struts-default.xml中
标签中
/xxx.jsp
//局部结果
/xxx.jsp
<
//结果类型结果类型是在父类配置struts-default中定义的,struts框架默认实现了绝大多数的。
/xx.jsp
//默认值//action--->jsp的转发
xx.action
//action--->action的转发
//action-->jsp的重定向
//action--action重定向
//表示的名字
//图片的下载stream
//stream文件的
image/jpeg//设置文件的类型
imagel// 必须有get的方法,创建的fileInputStream的对象的名称要一致
1024//
//设置就是下载
//json对象的配置//json的从定向 先导入一个插件(jar包plugin)//看源码
才有用//记得修改extends 的是json-default
jsonObject//在java代码中创建一个map集合的名称保持一致
utf-8//编码的形式
jsonActionRedirect: 重定向。./
xxx.action
由action重定向到json结果。

2.验证码的生成和验证

 

1./    验证码                                                >2.   // 验证码 struts标准的写法///        ValidateCode validateCode = new ValidateCode(100, 40, 4, 20);        validateCode.createCode();        String code = validateCode.getCode();        // 因为validate有一个validate.write(输出流)        // 输出流变成输入流        ByteArrayOutputStream baos = null;        baos = new ByteArrayOutputStream();        try {            validateCode.write(baos);            //获得输入流            imageStream=new ByteArrayInputStream(baos.toByteArray());        } catch (IOException e) {            e.printStackTrace();        }        return USER_VALIDATE;    }    //方法二    ValidateCode validateCode = new ValidateCode(100, 40, 4, 20);        validateCode.createCode();        String code = validateCode.getCode();        sHttpSession session = ServletActionContext.getRequest().getSession();        session.setAttribute("code", code);        //将验证码写会到浏览器        HttpServletResponse response = ServletActionContext.getResponse();        try {            validateCode.write(response.getOutputStream());        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;//防止在写回去的时候关闭流    }    private InputStream imageStream;    public InputStream getImageStream() {        return imageStream;    }    public void setImageStream(InputStream imageStream) {        this.imageStream = imageStream;    } 3.//strts-default.xml源码//    
image/jpeg
imageStream
1024
4.//登录验证码的验证.public String do_login() { // 判断输入的验证码和放入到缓存的是否一致. HttpSession session = ServletActionContext.getRequest().getSession(); String validate_code = (String) session.getAttribute("code"); if(!validate_code.equalsIgnoreCase(user.getValidate_code())){ addFieldError("validate_code", "验证码输入错误"); return USER_LOGERR; }

文件上传和修改时回显

上传:

//文件上传的时候表单提交
//源码;;setruts-core--fileup--interceptor3个属性;路径在jdbc.properties//注解标签 @value($(jdbc.))1.///文件上传 :
2.action类中注意写法名字是根据源码来的///@Value("$(fileupload)")//在.properties中配置 fileupload="D:/02";private String fileupDir;//两种方法去配置private File cust_image_file;//上传的文件 对象private String cust_image_fileContentType;//上传文件的类型 cust_name_file + ContypeTypeprivate String cust_image_fileFileName;//上传文件的名称 cust_name_file + FileName;//此处省略生成的get和set方法 String name = FileUtils.getFileName(cust_image_fileFileName); File destFile=new File(fileupDir, name);//将文件以指名字存入 if(!destFile.getParentFile().exists()){
//如果目录不存在,就创建??? destFile.getParentFile().mkdirs();// } System.out.println(destFile.getAbsolutePath()); try { org.apache.commons.io.FileUtils.copyFile(cust_image_file, destFile); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } customer.setCust_image(name);3.工具类/public static String getFileName(String fileName) {
//可以生成日期格式的文件夹.. String extra = fileName.substring(fileName.lastIndexOf(".")); String name = UUID.randomUUID().toString().concat(extra); // 添加时间前缀 Calendar instance = Calendar.getInstance(); instance.setTime(new Date()); int year = instance.get(Calendar.YEAR); int month = instance.get(Calendar.MONTH) + 1; int date = instance.get(Calendar.DATE); int hour = instance.get(Calendar.HOUR_OF_DAY); // int minute = instance.get(Calendar.MINUTE); StringBuffer sb = new StringBuffer(); sb.append(year); sb.append("/"); sb.append(month); sb.append("/"); sb.append(date); sb.append("/"); sb.append(hour); sb.append("/"); sb.append(name); return sb.toString(); }4.保存的位置的两种写法/////现在jdbc.properties配置file.up.dir=c:/03@Value("${file.up.dir}")private String fileupDir;或者第二种注入的方式

图片的回显:

 

1.jsp中修改链接///照片2.编写action////**     * 修改用户的照片客户资质     */    public String do_picture() {    1).findbyId    // 根据id查询        Customer find = customerService.findbyId(customer.getCust_id());        String cust_image = find.getCust_image();        File file = new File(fileupDir, cust_image);        FileInputStream fis = null;    2).判断是否为空/一般不会为空      if (StringUtils.isEmpty(cust_image)) {            return null;        }        // 流读写3).流读写   FileInputStream---->  ServletOutputStream        try {            ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();            fis = new FileInputStream(file);            byte[] arr = new byte[1024];            int len;            while ((len = fis.read(arr)) != -1) {                os.write(arr, 0, len);            }        } catch (IOException e) {            e.printStackTrace();        }        finally {            if(fis!=null){                try {                    fis.close();//注意servletOutputstream流框架不用我们关闭                } catch (IOException e) {                    e.printStackTrace();                }                fis=null;            }        }        return null;    }3.在edit中修改  if(!null) else{根据id获取图片再次存入}//if (cust_image_file != null && cust_image_file.length() > 0) {                  String fileName = FileUtils.getFileName(cust_image_fileFileName);           File destFile = new File(fileupDir, fileName);                              try {                                                                           if (!destFile.getParentFile().exists()) {                                       destFile.getParentFile().mkdirs();                                      }       System.out.println(destFile.getAbsolutePath());                             org.apache.commons.io.FileUtils.copyFile(cust_image_file, destFile);                             customer.setCust_image(fileName);                                       } catch (IOException e) {                                                       e.printStackTrace();                                                    }                                                                       } else {                                                                        Customer find11 = customerService.findbyId(customer.getCust_id());          System.out.println("11111111111111111111111111111111111111");               String cust_image = find11.getCust_image();    customer.setCust_image(cust_image);                                                                                                            }   customer.update(customer); }

因为

else {
Customer find11 = customerService.findbyId(customer.getCust_id());//对象find11存入到缓存区
String cust_image = find11.getCust_image();
System.out.println(find11.getCust_id());
customer.setCust_image(cust_image);
}
customerService.update(customer); //customer和find一样导致了相同的id有两个对象 return UPDATE_SUCCESS;

只需要 customerdao.clear();//清空缓存

 

 

转载于:https://www.cnblogs.com/liushisaonian/p/6962284.html

你可能感兴趣的文章
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
根据调试工具看Vue源码之组件通信(一)
查看>>
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
查看>>
斯坦福-随机图模型-week1.5
查看>>