文档章节

Struts2__CRUD

萧小蚁
 萧小蚁
发布于 2015/06/11 12:32
字数 1525
阅读 8
收藏 0
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>struts2_02</display-name>
  
  <filter>
  	<filter-name>Struts2Filter</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>Struts2Filter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;


public class DBHelper {
	private static String url;
	private static String user;
	private static String password;
	private static String driverClass;
	static{
		
		Properties p=new Properties();
		
		InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc.properties");
		
		try {
			p.load(is);
			driverClass=p.getProperty("driverClass");
			url=p.getProperty("url");
			user=p.getProperty("jdbc.user");
			password=p.getProperty("password");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	
	public static Connection getConnection(){
		Connection conn=null;
		try {
			Class.forName(driverClass);
			conn=DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	
	public static void close(Connection conn,Statement st,ResultSet rs){
		close(rs);
		close(conn,st);
	}
	
	public static void close(Connection conn,Statement st){
		close(st);
		close(conn);
	}
	
	public static void close(ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void close(Statement st){
		if(st!=null){
			try {
				st.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void close(Connection conn){
		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
#MySQL5.5
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
jdbc.user=root
password=root
package dao;

import java.util.List;

import model.Account;

public interface AccountDao {

	public boolean add(Account account);
	
	public boolean delete(int id);
	
	public boolean update(Account account);
	
	public Account get(int id);
	
	public List<Account> findAll();
}
package dao.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import util.DBHelper;
import model.Account;
import dao.AccountDao;

public class AccountDaoImpl implements AccountDao{

	//QueryRunner
	private QueryRunner qr=new QueryRunner();
	@Override
	public boolean add(Account account) {
		Connection conn=DBHelper.getConnection();
		String sql="insert into account(name,age,address) values(?,?,?)";
		Object[]param={account.getName(),account.getAge(),account.getAddress()};
		int i=0;
		try {
			i=qr.update(conn, sql, param);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBHelper.close(conn);
		}
		if(i>0){
			return true;
		}else{
			return false;
		}
	}

	@Override
	public boolean delete(int id) {
		Connection conn=DBHelper.getConnection();
		String sql="delete from account where id=?";
		Object[]param={id};
		int i=0;
		try {
			i=qr.update(conn, sql, param);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBHelper.close(conn);
		}
		if(i>0){
			return true;
		}else{
			return false;
		}
	}

	@Override
	public boolean update(Account account) {
		Connection conn=DBHelper.getConnection();
		String sql="update account set name=?,age=?,address=? where id=?";
		Object[]param={account.getName(),account.getAge(),account.getAddress(),account.getId()};
		int i=0;
		try {
			i=qr.update(conn, sql, param);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBHelper.close(conn);
		}
		if(i>0){
			return true;
		}else{
			return false;
		}
	}

	@Override
	public Account get(int id) {
		Connection conn=DBHelper.getConnection();
		String sql="select * from account where id=?";
		Object[]param={id};
		Account account=null;
		try {
			account=qr.query(conn, sql, new BeanHandler<Account>(Account.class),param);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return account;
	}

	@Override
	public List<Account> findAll() {
		Connection conn=DBHelper.getConnection();
		String sql="select * from account";
		List<Account> list=new ArrayList<Account>();
		
		try {
			list=qr.query(conn, sql, new BeanListHandler<Account>(Account.class));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

}
package model;

public class Account {

	private int id;
	private String name;
	private int age;
	private String address;
	
	public Account(){
		
	}

	public int getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

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

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}
<?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>
	
	<!-- 请求消息的编码方式  默认的编码为UTF-8 -->
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->
	<constant name="struts.action.extension" value="action,do,go,zhangsan,lisi"></constant>
    <!-- 默认值为false(生产环境下使用),开发阶段最好打开 -->
    <constant name="struts.configuration.xml.reload" value="true"></constant>
    <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 
     -->
    <constant name="struts.devMode" value="false"></constant>
    <!-- 启用Action的name是否支持斜线(/) -->
    <constant name="struts.enable.SlashesInActionNames" value="true"></constant>
   	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
   	
	<package name="default" namespace="/" extends="struts-default">
		<action name="account" class="action.AccountAction">
			<result name="list">/account_list.jsp</result>
			<result name="update">/account_update.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>

</struts>
package action;

import java.util.List;

import model.Account;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import dao.AccountDao;
import dao.impl.AccountDaoImpl;

public class AccountAction extends ActionSupport implements ModelDriven {

	/**
	 * 
	 */
	private static final long serialVersionUID = 882113756373473695L;
	
	private Account account;
	private int id;
	
	public String add(){
		AccountDao accountDao=new AccountDaoImpl();
		boolean flag=accountDao.add(account);
		if(flag){
			return findAll();
		}else{
			return "error";
		}
	
	}
	
	public String findAll(){
		AccountDao accountDao=new AccountDaoImpl();
		List<Account> list=accountDao.findAll();
		ActionContext.getContext().put("list", list);
		return "list";
	}
	
	
	
	@Override
	public Object getModel() {
		if(account==null){
			account=new Account();
		}
		return account;
	}

	

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

	public String edit(){
		AccountDao accountDao=new AccountDaoImpl();
		Account account2=accountDao.get(account.getId());
		ActionContext.getContext().put("account", account2);
		return "update";
	}
	public String update(){
		AccountDao accountDao=new AccountDaoImpl();
		boolean flag=accountDao.update(account);
		if(flag){
			return findAll();
		}else{
			return "error";
		}
	}
	public String delete(){
		AccountDao accountDao=new AccountDaoImpl();
		boolean flag=accountDao.delete(account.getId());
		if(flag){
			return findAll();
		}else{
			return "error";
		}
	}
	
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Struts2 CRUD demo</title>
	
  </head>
  
  <body>
    <a href="account!findAll.action">查看所有信息</a><br>
    <a href="account_add.jsp">添加</a><br>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>添加账号信息</title>
   

  </head>
  
  <body>
    <form action="account!add.action" method="post">
    	<table>
    	
    		<tr>
    		
    			<td>
    				账户名:
    			</td>
    			<td>
    				<input type="text" name="name">
    			</td>
    		</tr>
    		<tr>
    		
    			<td>
    				年   龄:
    			</td>
    			<td>
    				<input type="text" name="age">
    			</td>
    		</tr>
    		<tr>
    		
    			<td>
    				地   址:
    			</td>
    			<td>
    				<input type="text" name="address">
    			</td>
    		</tr>
    		<tr>
    		
    			<td colspan="2">
    				<input type="submit" value="提交">
    			</td>
    		</tr>
    	</table>
    </form>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
     <title>查询账户信息</title>

  </head>
  
  <body>
    <table>
  	
  		<tr>
  			<th>
  				ID
  			</th>
  			<th>
  				账户名
  			</th>
  			<th>
  				年龄
  			</th>
  			<th>
  				地址
  			</th>
  			<th>
  				操作
  			</th>
  		</tr>
  		
  		<c:forEach items="${list }" var="account">
  			<tr>
  				<td>
  					${account.id }
  				</td>
  				<td>
  					${account.name }
  				</td>
  				<td>
  					${account.age }
  				</td>
  				<td>
  					${account.address }
  				</td>
  				<td>
  					<a href="account!edit.action?id=${account.id }">修改</a>&nbsp;&nbsp;
  					<a href="account!delete.action?id=${account.id }">删除</a>
  				</td>
  			</tr>
  		</c:forEach>
  	</table>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'account_update.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="account!update.action" method="post">
    
    	<table>
    	
    		<tr>
    		
    			<td>
    				账户名:
    			</td>
    			<td>
    				<input type="text" name="name" value="${account.name }">
    			</td>
    		</tr>
    		<tr>
    		
    			<td>
    				年   龄:
    			</td>
    			<td>
    				<input type="text" name="age" value="${account.age }">
    			</td>
    		</tr>
    		<tr>
    		
    			<td>
    				地   址:
    			</td>
    			<td>
    				<input type="text" name="address" value="${account.address }">
    			</td>
    		</tr>
    		<tr>
    		
    			<td colspan="2">
    				<input type="submit" value="提交">
    			</td>
    		</tr>
    	</table>
    	<input type="hidden" name="id" value="${account.id }">
    </form>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'error.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    出现错误 <br>
  </body>
</html>


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 98
博文 279
码字总数 192339
作品 0
海淀
程序员
私信 提问
【Struts2+Spring3+Hibernate3】SSH框架整合实现CRUD

一、导入Spring3.0、Hibernate3.0、Struts2开发库。 二、配置web.xml文件的内容,如下: <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins......

桃源闲人
2012/04/01
0
0
推荐一个免费的JSP免费空间www.jhost.cn

www.jhost.cn,100MB空间大小,有tomcat,apache,mysql,ftp,php,管理端采用extjs做的WebOS,关键还是免费哦,很值得尝试哦 特别推荐给找工作的同学,将自己的作品往这一放,工作成了,呵呵。 ...

囧南风囧
2010/05/01
5K
14
入门级j2ee开源项目--simplejee

本项目是用来学习j2ee开发的入门级项目。 simplejee 是很多例子的大杂烩,用来演示j2ee开发的常用技术。 包括jsp,servlet,html,javascript,css等,以及springmvc+jdbcTemplate和 struts...

匿名
2010/03/02
6K
3
基于Struts2的jTable使用

由于有个项目中需要用到数据显示的表格插件,经过查阅资料发现了这款插件,在使用过程中也遇到好的问题,不过都解决了,所有在闲暇时间把这款插件结合struts2 做一个demo给大家,希望对看到的...

一哥No
2016/04/11
72
0
Restful服务框架--jREST4Guice

jREST4Guice是一个轻量级的基于Google Guice的Restful服务框架,支持JPA、JAAS、分布式资源对象,对OSGI的支持也在计划中。 基于Google guice 零配置,服务的自动扫描注册 非侵入式,用户不需...

匿名
2008/09/13
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

不学无数——SpringBoot入门IV

SpringBoot 1.Profiles Spring Profiles能够在不同的环境中使不同的应用配置生效。@Component和@Configuration两个注解都能够通过@Profiles来标记。下面是例子: @Configuration@Profile("b...

不学无数的程序员
23分钟前
2
0
nginx长连接出现504的解决办法

在http 中添加如下 fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s;...

hansonwong
24分钟前
1
0
记一次 Spring Boot多数据源 循环引用问题

如题,升级了一下mybatis版本后出现循环引用的问题。 具体异常如下 ***************************APPLICATION FAILED TO START***************************Description:The depen...

HeyS1
24分钟前
1
0
MongoDB Could not find host matching read preference { mode: \"primary\" } for set repl_shard1

最近在测试 MongoDB 4.0 分片集群 ,搭建好所有节点后,往mongos添加分片的时候,一直报错 Could not find host matching read preference { mode: \"primary\" } for set ,如下 mongos> sh...

xxj123gogo
28分钟前
1
0
linux安装java1.8

# tar -zxvf jdk-8u144-linux-x64.tar.gz vi /etc/profile export JAVA_HOME="/usr/local/java/jdk1.8.0_144" export CATALINA_HOME="/usr/local/tomcat/apache-tomcat-9.0.0.M22" export PA......

八戒八戒八戒
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部