fenyouze 发表于 2013-1-15 02:53:16

围绕分页的练习(2)(ssh+freemarker)

5、群删功能,通过checkbox选择。
function unselectall(){         if(document.form2.all.checked){                document.form2.all.checked =false;          }    }    function checkall(form){      for (var i=0;i<form.elements.length;i++){            var e = form.elements;            if (e.Name != 'all'&&e.disabled==false)                   e.checked = form.all.checked;      }   }   functiondeluser(currentPage,pageSize){       document.form2.action="deluser.action?page.currentPage="+currentPage+"&page.pageSize="+pageSize;    //不必写userModel.delib   document.form2.submit();}  
6、查看用户通过单击单元格即可。
function redirecAction(uid){      document.form2.action="toLookPage.action?userModel.uid="+uid;   document.form2.submit();   }  
<td > 
7、解决中文乱码,统一编码为UTF-8。
   1)、struts.properties
           struts.i18n.encoding=UTF-8
           struts.locale=zh_CN
   2)、freemarker.properties
           locale=zh_CN
           default_encoding=UTF-8
   3)、struts.xml
<?xml version="1.0" encoding="UTF-8"?> 
   4)、html  
   
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<form id="from3" name="from3" action="changpagesize.action" method="post">   
   5)、 如果有jsp相关的中文乱码得加个过滤器吧。    
       a) 、web.xml( SetCharacterEncoding.java和SetCharacterEncodingFilter.java)
<filter>      <filter-name>Set Character Encoding</filter-name>      <filter-class>nn.bbs.common.SetCharacterEncodingFilter</filter-class>      <init-param>             <param-name>encoding</param-name>             <param-value>UTF-8</param-value>      </init-param>       <init-param>             <param-name>ignore</param-name>             <param-value>true</param-value>      </init-param>   </filter>       <filter-mapping>      <filter-name>Set Character Encoding</filter-name>      <url-pattern>/*</url-pattern>   </filter-mapping> 
 或
 
<filter>       <filter-name>SetCharacterEncoding</filter-name>       <filter-class>nn.bbs.common.SetCharacterEncoding</filter-class>   </filter>   <filter-mapping>      <filter-name>SetCharacterEncoding</filter-name>    <url-pattern>/*</url-pattern>   </filter-mapping>  
       b)、jsp
<%@ page language="java" contentType="text/html;charset=utf-8"%> 
8、表的美化,鼠标指定某一单元格显示出来。参照
   
9、用freemarker操作select的显示出用户的市名、省名。
    
<select id="A"onchange="getCity(this.value)">         <#if userModel.shengname?exists>         <option >${userModel.shengname?if_exists}</option>         <#else>             <option>请选择</option>          </#if>   </select>    <select id="B" name="userModel.shiid">         <#if userModel.shiname?exists>             <option>${userModel.shiname?if_exists}</option>          <#else>             <option>请选择</option>          </#if>   </select>   
10、将一页的数据保存为Excel文件。
   1)、struts-user.xml
      
<!-- 导出Excel --><action name="excel" method="getexcel" class="userAction">                <result name="excel" type="stream">                  <param name="contentType">application/vnd.ms-excel</param>    <!-- 注意这里的ContentType -->                  <param name="inputName">excelStream</param>                   <!-- 这里需要和Action里的变量名一致 -->                  <param name="contentDisposition">filename="standard.xls"</param>                  <param name="bufferSize">1024</param>                </result>      </action> 
   2)、UserAction.java
//导出数据到Ecxelpublic String getexcel() throws Exception {excelStream=userService.gettheInputStream();          return "excel";    } 
   3)、UserServerImpl.java
//导出为Excel    publicInputStream gettheInputStream(){    //create excel report //first create workbook HSSFWorkbook workBook = new HSSFWorkbook(); //create sheet HSSFSheet sheet = workBook.createSheet("UserSheet"); //create row , HSSFRow row = sheet.createRow(0); //create cell HSSFCell cell=null;String[] starr={"序号","姓名","密码","性别","电子邮箱","问题","回答","注册时间","市名"};      for(int i=0;i<starr.length;i++){      cell = row.createCell((short)i); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(starr); //System.out.print(i+1);//System.out.println(starr);}ActionContext ctx = ActionContext.getContext();         Map m=ctx.getSession();   List list=new ArrayList(); list=(List) m.get("gettheexcel");for(int i=0;i<list.size();i++){Object[] obj=(Object[])list.get(i);row = sheet.createRow(i + 1); for(int j=0;j<starr.length;j++){cell = row.createCell((short)j); cell.setEncoding(HSSFCell.ENCODING_UTF_16); if(j==0){cell.setCellValue(i+1); }else{if(j==7){cell.setCellValue(((Date)obj).toString()); }else{cell.setCellValue((String)obj);}}}    System.out.println((String)obj+""+(String)obj+""+(String)obj+""+(String)obj+""+(String)obj+""+(String)obj+""+(String)obj+""+((Date)obj).toString()+""+(String)obj);   }ByteArrayOutputStream os = new ByteArrayOutputStream(); try { //把workBook中的数据以字节数组的形式写进输出流中 workBook.write(os); } catch (IOException e) { e.printStackTrace(); } //获取输出流的内容 byte[] content = os.toByteArray(); InputStream excelStream= new ByteArrayInputStream(content); return excelStream;    }  
  每当完成一项功能,都是令人欣喜的。做得很简陋,毕竟这是练习嘛。具体的代码请下载附件ssh_bbs.rar,包在“文章管理”-->“lib”-->“ssb运行的包”里,有什么不妥之处,请各位指正!
补:后来我用模型驱动改进了一下代码,修正了当list.size()=0时,显示出下一页、首页和currentPage=1的问题。改后的代码在附件"新.rar"中。
 
页: [1]
查看完整版本: 围绕分页的练习(2)(ssh+freemarker)