文档章节

struts2验证+拦截器+国际化+下载excle文档+struts2二级联动+OGNL表达试+ssh集成\部分代码, 项目下载、

猪刚烈
 猪刚烈
发布于 2014/08/16 09:35
字数 1696
阅读 22
收藏 0

struts2验证+拦截器+国际化+下载excle文档+struts2二级联动+OGNL表达试+验证码+ssh集成

 项目下载:

http://download.csdn.net/detail/liangrui1988/5875807


部分代码:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
  <p><a href="
  change.action?request_locale=zh_CN
  ">中文</a> <a href="change.action?request_locale=zh_HK">繁體</a> 
  <a href="change.action?request_locale=en">english</a></p>

  <font color="blue"><s:text name="new.user.register"/></font>
  
  <s:form action="register_user.action">
    <s:text name="user1.email"></s:text>
    <s:textfield label="%{getText('user1.name')}" name="user1.name"/>
    <s:textfield label="%{getText('user1.email')}" name="user1.email"/>
   <s:textfield label="%{getText('user1.password')}" name="user1.password"/>
    <s:textfield label="%{getText('user1.rePassword')}" name="user1.rePassword"/>
     <s:textfield label="%{getText('user1.age')}" name="user1.age"/>
    
  <s:submit value="%{getText('enters')}"/>
  </s:form> 
  </body>
</html>



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators 
PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN"  
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>

 <field name="name">
 <field-validator type="requiredstring">
 <message key="nameInvok"></message>
 </field-validator>
 </field>
      
 <field name="email">
   <field-validator type="required">
       <message>You cannot leave the email address field empty.</message>
   </field-validator>
   <field-validator type="email">
       <message>The email address you entered is not valid.</message>
   </field-validator>
 </field>
 
 <field name="password">
 <field-validator type="requiredstring">
 <message key="passwordInvok"></message>
 </field-validator>
 <field-validator type="stringlength">
 <param name="maxLength">10</param>
 <param name="minLength">4</param>
 <message key="passwod.length"> err to  ${maxLength} bettowe ${minLength} </message>
 </field-validator> 
 </field>
 
 <field name="rePassword">
 <field-validator type="fieldexpression">
    <param name="expression"><![CDATA[rePassword==password]]></param>
     <message key="rePass">xxxxaaaaa</message>

 </field-validator>
 
 </field>

 
  <!-- 非字段校验器 
  <validator type="required">
  <param name="fileName">email</param>
   <param name="fileName">age</param>
    <param name="fileName">name</param>
     <param name="fileName">password</param>
      <param name="fileName">rePassword</param>
  <message>字段不能为空</message>
  </validator> 
 -->

</validators>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
	
<bean id="testBean" class="accp.ssh.test.TestBean" >
<property name="name" value="刘备"/>
</bean>

<!-- 配制数据源  destroy-method="close" 用完之后自动关闭-->
<bean id="dataSoruce" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:ABC"/>
<property name="username" value="tenement"/>
<property name="password" value="rui"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="500"/>
<!-- 自动提交事务 -->
<property name="defaultAutoCommit" value="true"/>
</bean>

<!-- sessionFactory配制 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSoruce"/>

<property name="hibernateProperties">
<!--  
<props>
<prop key=""></prop>
</props>
-->
       <value>
	    hibernate.dialect=org.hibernate.dialect.OracleDialect
	    hibernate.hbm2ddl.auto=update
		hibernate.show_sql=true
	    </value>
</property>
<!-- 映射文件 -->
<property name="mappingResources" >
<list>
<value>accp/ssh/bean/Users3.hbm.xml</value>
</list>
</property>

</bean>

<!-- userdao - HibernateDaoSupport类需要一个注入配制 ||  singleton 是在IOC容器里生成唯一的一个实列-->
<bean id="userDao" class="accp.ssh.dao.Imple.UserDaoImple" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<!-- service实现层   属性UserDaoInterface dao的注入     -->
<bean id="serviceUser" class="accp.ssh.serviceImple.UserServiceImple">
<property name="dao" ref="userDao"/>
</bean>

<!-- 配制saveSerivceUser.action 保存用户   注入属性业务层的userService接口-->
<bean id="saveUsersAction" class="accp.ssh.action.users.SaveUsers" scope="prototype">
<property name="userService" ref="serviceUser"/>
</bean>

<!-- 配制查询所有用户, 注入业务层 得到实列  id=struts.action类class-->
<bean id="listUserActiond" class="accp.ssh.action.users.ListUser">
<property name="userSevice" ref="serviceUser"/>
</bean>

<!-- 删除用户 -->
<bean id="removeUserAction" class="accp.ssh.action.users.RemoveUser" scope="prototype">
<property name="serviceUser" ref="serviceUser"/>
</bean>

<!-- 更新用户 -->
<bean id="updatePUserAction" class="accp.ssh.action.users.UpdatePUser" scope="prototype">
<property name="serviceUser" ref="serviceUser" />
</bean>

<!-- 确认更新用户 -->
<bean id="updateUseraction" class="accp.ssh.action.users.UpdateUser" scope="prototype">
<property name="userService" ref="serviceUser"></property>
</bean>

<!-- 下载文件 excel-->
<bean id="dowloadUserDocAction" class="accp.ssh.action.users.DowloadUserDoc">
<property name="serviceUser" ref="serviceUser"/>
</bean>


</beans>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
<struts>
<include file="jqueryAction.xml"/>


<package name="default" extends="struts-default">
<!-- class是spring注入的id名称 -->
<action name="saveUser" class="saveUsersAction">
<result name="success"  type="redirectAction">listUser</result>
<result name="input">/saveUser.jsp</result>
<result name="error">/err.jsp</result>
</action>

<action name="listUser" class="listUserActiond">
<result name="success" >listUser.jsp</result>
</action>

<!-- 删除用户 -->
<action name="removeUser" class="removeUserAction">
<result name="success" type="redirectAction">listUser</result>
</action>

<!-- 更新用户  Page-->
<action name="updatePUser" class="updatePUserAction">
<result>updateUser.jsp</result>
</action>

<!--确认更新用户 -->
<action name="updateUser" class="updateUseraction">
<result name="success" type="redirectAction">listUser</result>
<result name="input">updateUser.jsp</result>
<result name="error">err.jsp</result>
</action>

<!-- 下载exec -->
<action name="dowloadUserDoc" class="dowloadUserDocAction">
<result name="success" type="stream">
<!-- 指定下载文件配制 -->
<!-- 配制文件类型为excel==xls -->
<param name="contentType">application/vnd.ms-excel</param>
<!-- 配制文件名 -->
<param name="contentDisposition">filename="allUserInfo.xls"</param>
<!-- 文件下载的方法名字 - 在action里的操作方法-->
<param name="inputName">downloadUserXls</param>
</result>
</action>

</package>

</struts>

update.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators 
PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN"  
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
  		
  	
<validators>
<field name="user">
<!-- 访问类型  指定对另一个xml文件过行访问,对 XXX-user-validation的文件进行访问 ,并验证 -->
<field-validator type="visitor">
<!-- 指定对那个对象验证 -->
<param name="context" >user</param>
<!--前面统一提示信息 -->
<param name="appendPrefix">true</param>
<message>update user s'  </message>
</field-validator>
</field>

</validators>

下载为xls方档

package accp.ssh.serviceImple;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import accp.ssh.bean.Users3;
import accp.ssh.dao.Imple.UserDaoImple;
import accp.ssh.dao.Interface.UserDaoInterface;
import accp.ssh.serviceInterface.UserServiceInteface;

public class UserServiceImple implements UserServiceInteface {

	private UserDaoInterface dao; //在spring里面注入
	
	
	public UserDaoInterface getDao() {
		return dao;
	}

	public void setDao(UserDaoInterface dao) {
		this.dao = dao;
	}

	@Override
	public void addUser(Users3 u) {
		dao.addUser(u);
		
		
	}

	@Override
	public List<Users3> getUserList() {
		return dao.getUserList();
		
	}

	@Override
	public void removeUser(Users3 u) {
	   dao.removeUser(u);
		
	}

	@Override
	public Users3 getUser(Integer id) {
		return dao.getUser(id);
	}

	@Override
	public void updateUser(Users3 u) {
	   dao.updateUser(u);
		
	}
	
	/**
	 * 下载用户文档并生成exec
	 * HSSFWorkbook poi包对象
	 */
	@Override
	public InputStream getUserDocStream() {
		
		HSSFWorkbook wb=new HSSFWorkbook();//创建exec对象
		HSSFSheet sheet=wb.createSheet(); //创建一张工作表
		HSSFRow row=sheet.createRow(0);//创建一行,从0开始
		
		HSSFCell cell;
		
		//0
		cell=row.createCell((short)0);//创建一个单元格,并放入数据
		cell.setEncoding(HSSFCell.ENCODING_UTF_16);//指定编码
		cell.setCellValue("序列"); //设值
				
		//1
		cell=row.createCell((short)1);//创建一个单元格,并放入数据
		cell.setEncoding(HSSFCell.ENCODING_UTF_16);//指定编码
		cell.setCellValue("ID号"); //设值
		
		//2
		cell=row.createCell((short)2);
		cell.setEncoding(cell.ENCODING_UTF_16);
		cell.setCellValue("姓");
		
		//2
		cell=row.createCell((short)3);
		cell.setEncoding(cell.ENCODING_UTF_16);
		cell.setCellValue("名");
		
		
		//2
		cell=row.createCell((short)4);
		cell.setEncoding(cell.ENCODING_UTF_16);
		cell.setCellValue("年龄");
		
		//从数据库里取数据
		List<Users3> listUser=dao.getUserList();
		
		for(int i=0;i<listUser.size();++i){
			Users3 user=listUser.get(i);
			row=sheet.createRow(i+1);//创建一行,从0开始
			//0
			cell=row.createCell((short)0);
			cell.setEncoding(cell.ENCODING_UTF_16);
			cell.setCellValue(i);
			//1
			cell=row.createCell((short)1);
			cell.setEncoding(cell.ENCODING_UTF_16);
			cell.setCellValue(user.getId());			
			//2
			cell=row.createCell((short)2);
			cell.setEncoding(cell.ENCODING_UTF_16);
			cell.setCellValue(user.getFirstName());
			//3
			cell=row.createCell((short)3);
			cell.setEncoding(cell.ENCODING_UTF_16);
			cell.setCellValue(user.getLastName());
			//4
			cell=row.createCell((short)4);
			cell.setEncoding(cell.ENCODING_UTF_16);
			cell.setCellValue(user.getAge());
		}
		//方式一 以字节流的方式  不会产生监时文件,是在内存中加载
		
		ByteArrayOutputStream os =new ByteArrayOutputStream();//字节数组输出流
		
		try {
			wb.write(os);//写入字节输出流对象是
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		byte[] bArry=os.toByteArray();//获取字节数组
		
		//将数组字节 写入到输入流对象
		InputStream isba=new ByteArrayInputStream(bArry);
		return isba;
		
		
		//办能获取一部分字节流,不可行
	/*	byte [] b=wb.getBytes();//获取文件字节流
		
		//把字节数组写入到字节输入流对象 
		InputStream isb=new ByteArrayInputStream(b); 
		return isb;*/
		
		
		//方式二
		/*//获得文件流
		final File file=new File("userDoc.xls");
		
		
		OutputStream os;//输出流
		InputStream is = null;//输入流
		try {
			os=new FileOutputStream(file);
			wb.write(os); //将wb文档  通过输出流  写入到File文件中
			os.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//将file文件 ,写入输入文件流,并返回
		try {
			is=new FileInputStream(file);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//用线程删掉tomact服务器的File的临时文件
		new Thread(
				new Runnable(){
					public void run() {
					//线程休眠15秒
					try {
						Thread.sleep(15000);
						
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					file.delete();//删除临时文件
					}
				}
				).start();
		
		//如果服务器在此之间关闭,监时文件不会删除,永远在,这时要用一个servlet,init()去删除
		
		return is;*/
	}

}


太多了!有兴趣可以下载项目!

本文转载自:http://blog.csdn.net/liangrui1988/article/details/9778787

猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
struts2实战教程

Struts2.0已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。 拥有丰富的开发人群,几乎已经成为了事实上的工业标准。因此,学习MVC框架,struts2.0几乎是必须熟悉的...

2846613430
2016/04/25
167
0
struts2部分总结

struts2细节 1.struts2基本配置 1.1 web.xml中配置(按xml指定顺序放置) <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPre......

我是小个子啊
2016/04/15
24
0
?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?

今天来总结一下Struts2的知识点,学习编程我的思路一般是这样的:     ① why ?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?)。     ②what ? 这个技术是什么玩意?有...

SEOwhywhy
05/26
8
0
Spring、Spring MVC、Struts2、、优缺点整理

Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架。 说它轻量级有一大部分...

架构师springboot
03/21
24
0
Struts2学习整理

Struts2的相关配置文件 default.properties -- 在org/apache/struts2/目录下,代表的是配置的是Struts2的常量的值 struts-default.xml -- 在Struts2的核心包下,代表的是Struts2核心功能的配...

Lunqi
2015/09/10
6.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部