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[i]; if (e.Name != 'all'&&e.disabled==false) e.checked = form.all.checked; } } function deluser(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 οnclick="redirecAction('${x[0]?if_exists}');">
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" οnfοcus="getProvince();" οnchange="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
//导出数据到Ecxel
public String getexcel() throws Exception {
excelStream=userService.gettheInputStream();
return "excel";
}
3)、UserServerImpl.java
//导出为Excel
public InputStream 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[i]);
//System.out.print(i+1);
//System.out.println(starr[i]);
}
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[j]).toString());
}
else{
cell.setCellValue((String)obj[j]);
}
}
}
System.out.println((String)obj[0]+" "+(String)obj[1]+" "+(String)obj[2]+" "+(String)obj[3]+" "+(String)obj[4]+" "+(String)obj[1]+" "+(String)obj[6]+" "+((Date)obj[7]).toString()+" "+(String)obj[8]);
}
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"中。