当前位置:  编程技术>移动开发
本页文章导读:
    ▪java 文件下传后上载        java 文件上传后下载 public String downFile()throws Exception{  System.out.println(fId+"========="+mailId);  MailAttach mailAttach = this.mailAttachManager.get(fId);   String filePath = ZbwtFileUploadUtil.getBigFileUpload()+mailAttach.getAt.........
    ▪ 翻书成效        翻书效果 Android 实现书籍翻页效果----原理篇 android酷炫翻页效果+图形分析涉及技术android Scroller Canvas贝塞尔曲线Android canvas的save()和restore()用法android canvas画图 切割画布(clipRect)其他实现.........
    ▪ struts2 输入校验配备       struts2 输入校验配置 在web应用中针对表单进行输入校验是必不可少的,最近参考《轻量级Java EE企业应用实战》,整理了下关于struts2中进行输入校验的知识,如下: Struts 2提供了基于验证.........

[1]java 文件下传后上载
    来源: 互联网  发布时间: 2014-02-18
java 文件上传后下载

public String downFile()throws Exception{
  System.out.println(fId+"========="+mailId);
  MailAttach mailAttach = this.mailAttachManager.get(fId);

  String filePath = ZbwtFileUploadUtil.getBigFileUpload()+mailAttach.getAttachFilePath();  //文件路径
  File file = new File(filePath);
  if (file.exists()) {
   HttpServletResponse response = Struts2Utils.getResponse();
   HttpServletRequest request = Struts2Utils.getRequest();
   response.setHeader("Pragma", "No-Cache");
   response.setHeader("Cache-Control", "No-Cache");
   response.setDateHeader("Expires", 0);
   response.setHeader("Accept-Ranges", "bytes");
   response.setContentType("application/octet-stream");
   OutputStream out = response.getOutputStream();
   response.setHeader("Content-Type", "application/x-msdownload");
   String agent = (String)request.getHeader("USER-AGENT");  
   if(agent != null && agent.indexOf("MSIE") == -1) {   //用于中间有空格时 空格后名称无法出现
    // FF   
    String enableFileName = "=?UTF-8?B?" + (new String(Base64.encodeBase64(mailAttach.getAttachSolidName().getBytes("UTF-8")))) + "?=";  
    response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName); } 
   else {  
    // IE   
    String enableFileName = new String(mailAttach.getAttachSolidName().getBytes("GBK"), "ISO-8859-1");    response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName);
    response.setHeader("Content-Disposition", "attachment; filename=" + enableFileName);  
   }
   FileInputStream input = new FileInputStream(file);
   int line = 0;
   byte[] bytes = new byte[2048];
   while ((line = input.read(bytes)) != -1) {
    out.write(bytes, 0, line);
   }
   input.close();
   out.close();
  }
  return null;
 }


    
[2] 翻书成效
    来源: 互联网  发布时间: 2014-02-18
翻书效果
Android 实现书籍翻页效果----原理篇
android酷炫翻页效果+图形分析
涉及技术
android Scroller
Canvas
贝塞尔曲线
Android canvas的save()和restore()用法
android canvas画图 切割画布(clipRect)
其他实现及系列文章请转上面链接到作者博客,此处就为收藏。

    
[3] struts2 输入校验配备
    来源: 互联网  发布时间: 2014-02-18
struts2 输入校验配置
在web应用中针对表单进行输入校验是必不可少的,最近参考《轻量级Java EE企业应用实战》,整理了下关于struts2中进行输入校验的知识,如下:


Struts 2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts 2的验证框架将会负责进行服务器校验和客户端校验。
下面应用将会示范如何利用Struts 2的校验框架进行输入校验。使用Struts 2的校验框架进行校验无须对程序代码进行任何改变,只需编写校验规则文件即可,校验规则文件指定每个表单域应该满足怎样的规则。
本应用所使用的表单代码如下:
<s:form action="/blog_article/regist/index.html">
<s:textfield name="name" label="用户名"/>
<s:textfield name="pass" label="密码"/>
<s:textfield name="age" label="年龄"/>
<s:textfield name="birth" label="生日"/>
<s:submit value="注册"/>
</s:form>
上面粗体字代码定义了4个表单域,这4个表单域分别对应name、pass、age和birth 4个请求参数,假设本应用要求这4个请求参数满足如下规则:
q name和pass只能是字母和数组,且长度必须在4到25之间。
q 年龄必须是1到150之间的整数。
q 生日必须在1900-01-01和2050-02-21之间。

下面是该请求对应的Action代码。
public class RegistAction extends ActionSupport
{
//该请求包含的4个请求参数
private String name;
private String pass;
private int age;
private Date birth;
//此处省略了4个属性的setter和getter方法
...
}
在上面Action中,仅提供了4个属性来封装用户的请求参数,并为这4个参数提供了对应的setter和getter方法。该Action继承了ActionSupport类,因此它也包含了一个execute方法,且该方法直接返回success字符串,这个Action不具备任何输入校验的功能。
但通过为该Action指定一个校验规则文件后,即可利用Struts 2的输入校验功能对该Action进行校验。下面是本应用所使用的输入校验文件。
<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!-- 校验文件的根元素 -->
<validators>
<!-- 校验Action的name属性 -->
<field name="name">
<!-- 指定name属性必须满足必填规则 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入名字</message>
</field-validator>
<!-- 指定name属性必须匹配正则表达式 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的用户名只能是字母和数字
,且长度必须在4到25之间</message>
</field-validator>
</field>
<!-- 校验Action的pass属性 -->
<field name="pass">
<!-- 指定pass属性必须满足必填规则 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<!-- 指定pass属性必须满足匹配指定的正则表达式 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的密码只能是字母和数字
,且长度必须在4到25之间</message>
</field-validator>
</field>
<!-- 指定age属性必须在指定范围内-->
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
<!-- 指定birth属性必须在指定范围内-->
<field name="birth">
<field-validator type="date">
<!-- 下面指定日期字符串时,必须使用本Locale的日期格式 -->
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message>生日必须在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
校验规则文件的根元素是<validators.../>元素,<validators.../>元素可包含多个<field.../>或<validator.../>元素,它们都用于配置校验规则,区别是:<field-validator.../>是字段校验器的配置风格,而<validator.../>是非字段校验器的配置风格。
Struts 2的校验文件规则与Struts 1的校验文件设计方式不同,Struts 2中每个Action都有一个校验文件,因此该文件的文件名应该遵守如下规则:
<Action名字>-validation.xml
前面的Action名是可以改变的,后面的-validation.xml部分总是固定的,且该文件应该被保存在与Action class文件相同的路径下。例如,本应用的Action class文件保存在WEB-INF/classes/org/crazyit/app/action路径下,故该校验文件也应该保存在该路径下。

与类型转换失败相似的是,当输入校验失败后,Struts 2也是自动返回名为“input”的Result,因此需要在struts.xml文件中配置名为“input”的Result。下面是本应用的struts.xml文件中Action的配置片段:
<!-- 用户注册的Action -->
<action name="regist" >
<!-- 类型转换失败、输入校验失败,转入该页面 -->
<result name="input">/regist.jsp</result>
<result>/show.jsp</result>
</action>
增加了上面修改之后,这样就为该Action对应的各字段添加了校验规则,而且指定了校验失败后应用会跳转到regist.jsp页面,接下来可以在regist.jsp页面中添加<s:fielderror/>来输出错误提示。
剩下部分无须任何修改,系统自动会加载该文件,当用户提交请求时,Struts 2的校验框架会根据该文件对用户请求进行校验。

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3