wangtianbao

SSH(struts2、Hibernate、spring)示例---[用户校验、增删改查(CRUD)、生成EXCEL表格]


----------/WEB-INF/web.xml--------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns
="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
<filter>
    
<filter-name>struts2</filter-name>
    
<!--<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>-->
    
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    
<filter-name>struts2</filter-name>
    
<url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  
<servlet>
    
<servlet-name>DeleteFilesServlet</servlet-name>
    
<servlet-class>com.test.servlet.DeleteFilesServlet</servlet-class>
    
<load-on-startup>8</load-on-startup>
  
</servlet>

  
<welcome-file-list>
    
<welcome-file>index.jsp</welcome-file>
  
</welcome-file-list>
</web-app>
----------/WEB-INF/applicationContext.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-2.0.xsd">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost/mytest"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<property name="defaultAutoCommit" value="true"></property>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/test/bean/User.hbm.xml</value>
</list>
</property>

</bean>

<bean id="userDAO" class="com.test.dao.impl.UserDAOImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>


<bean id="userService" class="com.test.service.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO"></property>
</bean>

<!-- ********************* -->

<bean id="saveUserAction" class="com.test.action.user.SaveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<bean id="listUserAction" class="com.test.action.user.ListUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<bean id="deleteUserAction" class="com.test.action.user.RemoveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<bean id="updatePUserAction" class="com.test.action.user.UpdatePUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<bean id="updateUserAction" class="com.test.action.user.UpdateUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<bean id="genereteExcelAction" class="com.test.action.user.GenereteExcelAction" scope="singleton">
<property name="service" ref="userService"></property>
</bean>

</beans>

----------/index.jsp--------
<%@ 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>
<center>
<h1><font color="red">Operation List</font></h1>
<s:a href="save.jsp">Save User</s:a><br/><br/><br/>
<s:a href="listUser.action">List Users</s:a>
</center>
</body>
</html>

----------/save.jsp--------
<%@ 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>Save User</title>
</head>
<body>
<center>
<h1><font color="red">Save User</font></h1>
<s:form action="saveUser">
<s:textfield name="user.firstName" label="%{getText('firstName')}"></s:textfield>
<s:textfield name="user.lastName" label="%{getText('lastName')}"></s:textfield>
<s:textfield name="user.age" label="%{getText('age')}"></s:textfield>
<s:submit></s:submit>

</s:form>
</center>
</body>
</html>

----------/list.jsp--------
<%@ 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 'list.jsp' starting page</title>
<script type="text/javascript">
function del(){
if(window.confirm("确定要删除用户")){
return true;
}

return false;
}

</script>

</head>
<body>
<center>
<h1><font color="red">UserList</font></h1>
<table border="1">
<tr>
<td width="60">序号</td>
<td width="60"></td>
<td width="60"></td>
<td width="60">年龄</td>
<td width="60">删除</td>
<td width="60">更新</td>
</tr>
<s:iterator value="#request.list" id="us">
<tr>
<td><s:property value="#us.id"/></td>
<td><s:property value="#us.firstName"/></td>
<td><s:property value="#us.lastName"/></td>
<td><s:property value="#us.age"/></td>
<td><s:a href="deleteUser.action?user.id=%{#us.id}" onclick="return del()">delete</s:a></td>
<td><s:a href="updatePUser.action?user.id=%{#us.id}">update</s:a></td>
</tr>
</s:iterator>
</table>
<br/><br/><br/>
<s:a href="index.jsp">主页</s:a>
<br/><br/><br/>
<s:a href="genereteExcel.action">生成EXCEL表格</s:a>
</center>
</body>
</html>

----------/update.jsp--------
<%@ 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>Update User</title>
</head>
<body>
<center>
<h1><font color="red">Update User</font></h1>
<s:form action="updateUser">
<s:hidden name="user.id" value="%{user.id}"></s:hidden>
<s:textfield name="user.firstName" value="%{user.firstName}" label="%{getText('firstName')}"></s:textfield>
<s:textfield name="user.lastName" value="%{user.lastName}" label="%{getText('lastName')}"></s:textfield>
<s:textfield name="user.age" value="%{user.age}" label="%{getText('age')}"></s:textfield>
<s:submit></s:submit>
</s:form>
</center>
</body>
</html>

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

<struts>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="user" extends="struts-default">
<action name="saveUser" class="saveUserAction">
<result type="redirect">listUser</result>
<result name="input">/save.jsp</result>
</action>

<action name="listUser" class="listUserAction">
<result>list.jsp</result>
</action>

<action name="deleteUser" class="deleteUserAction">
<result type="redirect">listUser</result>
</action>

<action name="updatePUser" class="updatePUserAction">
<result>/update.jsp</result>
</action>

<action name="updateUser" class="updateUserAction">
<result type="redirect">listUser</result>
<result name="input">/update.jsp</result>
</action>

<action name="genereteExcel" class="genereteExcelAction">
<result type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">filename="AllUsers.xls"</param>
<param name="inputName">downloadFile</param>
</result>
</action>
</package>
</struts>

----------struts.properties--------
struts.custom.i18n.resources=globalMessages

----------globalMessages_en.properties--------
firstName=firstName
lastName
=lastName
age
=age

----------globalMessages_zh.properties--------
firstName=\u59D3
lastName
=\u540D
age
=\u5E74\u9F84

----------com/test/bean/User.java--------
package com.test.bean;

public class User {
private int id;
private String firstName;
private String lastName;
private int age;
public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}


}

----------com/test/bean/User.hbm.xml--------
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<hibernate-mapping>
<class name="com.test.bean.User" table="users">
<id name="id" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="firstName"></property>
<property name="lastName"></property>
<property name="age" type="java.lang.Integer"></property>
</class>
</hibernate-mapping>
----------com/test/bean/User-user-validation.xml--------
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>

<validators>
<field name="firstName">
<field-validator type="requiredstring">
<message>姓不能为空</message>
</field-validator>
</field>
<field name="lastName">
<field-validator type="requiredstring">
<message>名不能为空</message>
</field-validator>
</field>

<field name="age">
<field-validator type="required">
<message>年龄不能为空</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄要在${min}与${max}之间</message>
</field-validator>
</field>
</validators>
----------com/test/dao/UserDAO.java--------
package com.test.dao;

import java.util.List;

import com.test.bean.User;

public interface UserDAO {
public void saveUser(User user);
public void removeUser(User user);
public User findUserById(int id);
public List<User> findAllUsers();
public void updateUser(User user);
}

----------com/test/dao/impl/UserDAOImpl.java--------
package com.test.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.test.bean.User;
import com.test.dao.UserDAO;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

@SuppressWarnings(
"unchecked")
public List<User> findAllUsers() {
return (List<User>)this.getHibernateTemplate().find("from User user order by user.id desc");
}


public User findUserById(int id) {
return (User)this.getHibernateTemplate().get(User.class, id);
}


public void removeUser(User user) {
this.getHibernateTemplate().delete(user);

}


public void saveUser(User user) {
this.getHibernateTemplate().save(user);

}


public void updateUser(User user) {
this.getHibernateTemplate().update(user);

}


}

---------com/test/service/UserService.java---------
package com.test.service;

import java.io.InputStream;
import java.util.List;

import com.test.bean.User;

public interface UserService {
public List<User> findAll();
public void save(User user);
public void delete(User user);
public User findById(int id);
public void update(User user);
public InputStream getInputStream();
}

---------com/test/service/impl/UserServiceImpl.java---------
package com.test.service.impl;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.List;

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 com.test.bean.User;
import com.test.dao.UserDAO;
import com.test.service.UserService;

public class UserServiceImpl implements UserService {
private UserDAO userDAO;

public UserDAO getUserDAO() {
return userDAO;
}


public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}


public void delete(User user) {
userDAO.removeUser(user);

}


public List<User> findAll() {
return userDAO.findAllUsers(); // Ctrl+T 可 查看实现类
}


public User findById(int id) {
return userDAO.findUserById(id);
}


public void save(User user) {
userDAO.saveUser(user);

}


public void update(User user) {
userDAO.updateUser(user);

}


public InputStream getInputStream() {
HSSFWorkbook wb
= new HSSFWorkbook();
HSSFSheet sheet
= wb.createSheet("sheet1");
HSSFRow row
= sheet.createRow(0);

HSSFCell cell
= row.createCell((short)0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(
"序号");

cell
= row.createCell((short)1);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(
"");

cell
= row.createCell((short)2);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(
"");

cell
= row.createCell((short)3);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(
"年龄");

List
<User> list = this.findAll();
for(int i=0; i<list.size(); i++){
User user
= list.get(i);
row
= sheet.createRow(i+1);

cell
= row.createCell((short)0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(i
+1);

cell
= row.createCell((short)1);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(user.getFirstName());

cell
= row.createCell((short)2);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(user.getLastName());

cell
= row.createCell((short)3);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(user.getAge());

}


ByteArrayOutputStream baos
= new ByteArrayOutputStream();
try {
wb.write(baos);
}
catch (Exception e) {
e.printStackTrace();
}

byte[] content = baos.toByteArray();
InputStream is
= new ByteArrayInputStream(content);
return is;


/* //String fileName = CharacterUtils.getRandomString(10);
String fileName = RandomStringUtils.randomAlphanumeric(10);

fileName = new StringBuffer(fileName).append(".xls").toString();
final File file = new File(fileName);

//File file = new File("test.xls");

try {
OutputStream os = new FileOutputStream(file);
wb.write(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}

InputStream is = null;
try {
is = new FileInputStream(file);

} catch (Exception e) {
e.printStackTrace();
}

new Thread(new Runnable(){
public void run(){
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
e.printStackTrace();
}
file.delete();
}
}).start();


return is;
*/

}


}


----------com/test/action/user/SaveUserAction.java--------
package com.test.action.user;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
import com.test.service.UserService;

public class SaveUserAction extends ActionSupport {
private User user;
private UserService service;

//get方法可省
public UserService getService() {
return service;
}


public void setService(UserService service) {
this.service = service;
}


public User getUser() {
return user;
}


public void setUser(User user) {
this.user = user;
}


@Override
public String execute() throws Exception {
this.service.save(this.user);
return SUCCESS;
}


@Override
@SuppressWarnings(
"unchecked")
public void validate() {
Map map
= this.getFieldErrors();
Set set
= map.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();){
System.out.println(map.get(iter.next()));
}

}

}

----------com/test/action/user/SaveUserAction-validation.xml--------
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>

<!--
<validators>
<field name="user.firstName">
<field-validator type="requiredstring">
<message>姓不能为空</message>
</field-validator>
</field>
<field name="user.lastName">
<field-validator type="requiredstring">
<message>名不能为空</message>
</field-validator>
</field>

<field name="user.age">
<field-validator type="required">
<message>年龄不能为空</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄要在${min}与${max}之间</message>
</field-validator>
</field>
</validators>
-->

<validators>
<field name="user"> <!-- 校验user属性 -->
<field-validator type="visitor"> <!-- 校验类型 -->
<param name="context">user</param> <!-- 上下文的名字 (User-user-validation.xml) -->
<param name="appendPrefix">true</param> <!-- 附加前缀为真 -->
<message>用户的</message> <!-- 前缀内容 -->
</field-validator>
</field>
</validators>
----------com/test/action/user/RemoveUserAction.java--------
package com.test.action.user;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
import com.test.service.UserService;

public class RemoveUserAction extends ActionSupport {
private User user;
private UserService service;
public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public UserService getService() {
return service;
}

public void setService(UserService service) {
this.service = service;
}

@Override
public String execute() throws Exception {
this.service.delete(user);
return SUCCESS;
}

}

----------com/test/action/user/UpdateUserAction.java--------
package com.test.action.user;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
import com.test.service.UserService;

public class UpdateUserAction extends ActionSupport {
private User user;
private UserService service;

public User getUser() {
return user;
}


public void setUser(User user) {
this.user = user;
}


public UserService getService() {
return service;
}


public void setService(UserService service) {
this.service = service;
}


@Override
public String execute() throws Exception {
this.service.update(user);
return SUCCESS;
}

}

----------com/test/action/user/UpdateUserAction-validation.xml--------
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>

<!--
<validators>
<field name="user.firstName">
<field-validator type="requiredstring">
<message>姓不能为空</message>
</field-validator>
</field>
<field name="user.lastName">
<field-validator type="requiredstring">
<message>名不能为空</message>
</field-validator>
</field>

<field name="user.age">
<field-validator type="required">
<message>年龄不能为空</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年龄要在${min}与${max}之间</message>
</field-validator>
</field>
</validators>
-->

<validators>
<field name="user"> <!-- 校验user属性 -->
<field-validator type="visitor"> <!-- 校验类型 -->
<param name="context">user</param> <!-- 上下文的名字 (User-user-validation.xml) -->
<param name="appendPrefix">true</param> <!-- 附加前缀为真 -->
<message>用户的</message> <!-- 前缀内容 -->
</field-validator>
</field>
</validators>

----------com/test/action/user/UpdatePUserAction.java--------
package com.test.action.user;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
import com.test.service.UserService;

public class UpdatePUserAction extends ActionSupport {
private User user;
private UserService service;
public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public UserService getService() {
return service;
}

public void setService(UserService service) {
this.service = service;
}


@Override
public String execute() throws Exception {
user
= this.service.findById(user.getId());
return SUCCESS;
}

}


----------com/test/action/user/ListUserAction.java--------
package com.test.action.user;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.test.service.UserService;

public class ListUserAction extends ActionSupport {
private UserService service;

public UserService getService() {
return service;
}


public void setService(UserService service) {
this.service = service;
}


@Override
public String execute() throws Exception {
Map request
= (Map)ActionContext.getContext().get("request");
request.put(
"list", service.findAll());
return SUCCESS;
}

}


----------com/test/action/user/GenereteExcelAction.java--------
package com.test.action.user;

import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;
import com.test.service.UserService;

public class GenereteExcelAction extends ActionSupport {
private UserService service;

public UserService getService() {
return service;
}


public void setService(UserService service) {
this.service = service;
}


public InputStream getDownloadFile(){
return this.service.getInputStream();
}


@Override
public String execute() throws Exception {
return SUCCESS;
}

}


----------com/test/servlet/DeleteFilesServlet.java--------
package com.test.servlet;


import java.io.File;
import java.io.FileFilter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

public class DeleteFilesServlet extends HttpServlet {
public void destroy() {
}

public void init() throws ServletException {
/*File file = new File(".");
File[] subFiles = file.listFiles();
for(File f: subFiles){
if(f.getName().endsWith(".xls")){
f.delete();
}
}
*/


File file
= new File(".");
File[] subFiles
= file.listFiles(new FileFilter(){
public boolean accept(File pathname){
if(pathname.getName().endsWith(".xls")){
return true;
}
else{
return false;
}

}

}
);
for(File f: subFiles){
f.delete();
}


}


}

----------com/test/util/CharacterUtils.java--------
package com.test.util;

import java.util.Random;

public class CharacterUtils {
public static String getRandomString(int length){
String str
= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random
= new Random();
StringBuffer sb
= new StringBuffer();
for(int i=0; i<length; i++){
int number = random.nextInt(62);
sb.append(str.charAt(number));
}

return sb.toString();
}

public static void main(String[] args) {
System.out.println(getRandomString(
10));
}

}


posted on 2011-11-23 05:08 王添宝 阅读(7434) 评论(3)  编辑  收藏

评论

# re: SSH(struts2、Hibernate、spring)示例---[用户校验、增删改查(CRUD)、生成EXCEL表格] 2013-05-16 13:17 fsdds

fsfsdfsd  回复  更多评论   

# re: SSH(struts2、Hibernate、spring)示例---[用户校验、增删改查(CRUD)、生成EXCEL表格] 2016-06-08 11:25 发热管特个人

是的  回复  更多评论   

# re: SSH(struts2、Hibernate、spring)示例---[用户校验、增删改查(CRUD)、生成EXCEL表格] 2016-06-08 11:28 @qq

action链接可以用占位符 这样代码就会少很多也方便   回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: