结果集:
//全局结果 源码:struts-default.xml中标签中 //局部结果 /xxx.jsp //结果类型结果类型是在父类配置struts-default中定义的,struts框架默认实现了绝大多数的。 /xxx.jsp </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 jsonActionRedirect: 重定向。./ jsonObject//在java代码中创建一个map集合的名称保持一致 utf-8//编码的形式 由action重定向到json结果。 xxx.action
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; }
文件上传和修改时回显
上传:
//文件上传的时候表单提交
图片的回显:
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();//清空缓存