Struts2__CRUD
Struts2__CRUD
萧小蚁 发表于3年前
Struts2__CRUD
  • 发表于 3年前
  • 阅读 8
  • 收藏 0
  • 点赞 0
  • 评论 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>


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
萧小蚁
粉丝 95
博文 278
码字总数 192339
×
萧小蚁
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: