zoukankan      html  css  js  c++  java
  • SSH--1

    package com.etc.action;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.etc.biz.FamilyBiz;
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    import com.google.gson.Gson;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class FamilyAction extends ActionSupport
    {
    	private List<Family> list ;
    	private List<Pet> pets ;
    	private FamilyBiz biz;
    	private Family family;//a 用于接收来自表单的输入
    	private Pet pet;//a 用于接收来自ajax的宠物输入
    	public List<Pet> getPets() {
    		return pets;
    	}
    
    	public void setPets(List<Pet> pets) {
    		this.pets = pets;
    	}
    
    	
    	
    	public Pet getPet() {
    		return pet;
    	}
    
    	public void setPet(Pet pet) {
    		this.pet = pet;
    	}
    
    	private boolean isshow;
    	private String msg;
    	
    	public boolean isIsshow() {
    		return isshow;
    	}
    
    	public void setIsshow(boolean isshow) {
    		this.isshow = isshow;
    	}
    
    	public String getMsg() {
    		return msg;
    	}
    
    	public void setMsg(String msg) {
    		this.msg = msg;
    	}
    
    	public Family getFamily() {
    		return family;
    	}
    
    	public void setFamily(Family family) {
    		this.family = family;
    	}
    
    	
    	
    	public List<Family> getList() {
    		return list;
    	}
    
    	public void setList(List<Family> list) {
    		this.list = list;
    	}
    
    	public FamilyBiz getBiz() {
    		return biz;
    	}
    
    	public void setBiz(FamilyBiz biz) {
    		this.biz = biz;
    	}
    
    	public String findall()
    	{
    		list = biz.findAll();
    		return "findall_success";
    	}
    	
    	public String add()
    	{
    		//1 让表单输入的宠物list,作为family的set对象
    		Set<Pet> ps = new HashSet<Pet>(this.pets);
    		for(Pet p:ps)
    			p.setFamily(family);
    		family.setPets(ps);
    		
    		try 
    		{
    			biz.add(family);
    		} catch (Exception e) 
    		{
    			isshow = true;
    			msg = "添加过程发现未知异常!"+e.getMessage();
    			return "my_error";
    		}
    		isshow = true;
    		msg = "添加成功!";
    		return "add_success";
    	}
    	
    	public String toupdate()
    	{
    		int fid = family.getFid();
    		family = biz.findById(fid);
    		return "toupdate_success";
    	}
    	
    	public String update()
    	{
    		//1 让表单输入的宠物list,作为family的set对象
    		Set<Pet> ps = new HashSet<Pet>(this.pets);
    		for(Pet p:ps)
    			p.setFamily(family);
    		family.setPets(ps);
    		
    		try 
    		{
    			biz.update(family);
    		} catch (Exception e) 
    		{
    			isshow = true;
    			msg = "修改过程发现未知异常!"+e.getMessage();
    			return "my_error";
    		}
    		isshow = true;
    		msg = "修改成功!";
    		return "update_success";
    	}
    	
    	public String addpet() throws IOException
    	{
    		//让pet和family对象发生关联关系
    		pet.setFamily(family);
    		
    		try 
    		{
    			int pid = biz.add(pet);
    			pet.setPid(pid);//添加成功,使用返回的主键让pet对象完整。
    			
    		} catch (Exception e) 
    		{
    			
    			
    		}
    		
    		Gson gson = new Gson();
    
    		String json = gson.toJson(pet);//将pet对象转成json字符串返回
    		//先设置响应编码
    		HttpServletResponse res = ServletActionContext.getResponse();
    		res.setContentType("text/html;charset=utf-8");
    		PrintWriter pw = res.getWriter();
    		//写回客户端
    		pw.print(json);
    		pw.flush();
    		pw.close();
    		return "addpet_success";
    	}
    	public String delpet() throws IOException
    	{
    		int pid = pet.getPid();
    		//family = new Family();
    		//pet.setFamily(family);
    		String restxt = "";
    		try 
    		{
    			biz.delpet(pid);
    			restxt = "1";
    		} catch (Exception e) 
    		{
    			restxt = "0";
    		}
    		//先设置响应编码
    		HttpServletResponse res = ServletActionContext.getResponse();
    		res.setContentType("text/html;charset=utf-8");
    		PrintWriter pw = res.getWriter();
    		//写回客户端
    		pw.print(restxt);
    		pw.flush();
    		pw.close();
    		return "delpet_success";
    	}
    	public String delete()
    	{
    		int fid = family.getFid();
    		try {
    			biz.del(fid);			
    		} catch (Exception e) 
    		{
    			isshow = true;
    			msg = "删除过程发现未知异常!"+e.getMessage();
    			return "my_error";
    		}
    		isshow = true;
    		msg = "删除成功!";
    		return "delete_success";
    
    	}
    }
    

      

    package com.etc.biz;
    
    import java.util.List;
    
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    
    public interface FamilyBiz {
    	List<Family> findAll();
    	void add(Family family);
    	Family findById(int fid);
    	void update(Family family);
    	
    	//ajax专用,返回添加后的主键
    	int add(Pet pet);
    	void del(int fid);
    	void delpet(int pid);
    }
    

      

    package com.etc.biz.imp;
    
    import java.util.List;
    
    import com.etc.biz.FamilyBiz;
    import com.etc.dao.FamilyDao;
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    
    public class FamilyBizImp implements FamilyBiz 
    {
    	private FamilyDao dao;
    	
    	public FamilyDao getDao() {
    		return dao;
    	}
    
    	public void setDao(FamilyDao dao) {
    		this.dao = dao;
    	}
    
    	public List<Family> findAll() {
    		return dao.findAll();
    	}
    
    	public void add(Family family) 
    	{
    		dao.add(family);		
    	}
    
    	public Family findById(int fid) {		
    		return dao.findById(fid); 
    	}
    
    	public void update(Family family) {
    		dao.update(family);
    		
    	}
    
    	public int add(Pet pet) {
    		return dao.add(pet);		
    	}
    
    	public void delpet(int pid) 
    	{
    		dao.delpet(pid);		
    	}
    
    	public void del(int fid) {	
    		dao.del(fid);
    	}
    }
    

      

    package com.etc.dao;
    
    import java.util.List;
    
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    
    public interface FamilyDao {
    	List<Family> findAll();
    	void add(Family family);
    	Family findById(int fid);
    	void update(Family family);
    	
    	//ajax专用
    	int add(Pet pet);
    	void del(int fid);
    	void delpet(int pid);	
    }
    

      

    package com.etc.dao.imp;
    
    import java.util.List;
    
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    
    import com.etc.dao.FamilyDao;
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    
    public class FamilyDaoImp extends HibernateDaoSupport implements FamilyDao 
    {
    	public List<Family> findAll() 
    	{
    		String  hql  = "from Family";
    		return this.getHibernateTemplate().find(hql);
    	}
    
    	public void add(Family family)
    	{
    		this.getHibernateTemplate().save(family);
    		
    	}
    
    	public Family findById(int fid) {
    
    		return this.getHibernateTemplate().get(Family.class, fid);
    	}
    
    	public void update(Family family) {
    		this.getHibernateTemplate().update(family);		
    	}
    
    	public int add(Pet pet) 
    	{
    		return (Integer) this.getHibernateTemplate().save(pet);		
    	}
    
    	public void delpet(int pid) {
    		//先查再删除
    		Pet p = this.getHibernateTemplate().get(Pet.class, pid);
    		this.getHibernateTemplate().delete(p);		
    	}
    
    	public void del(int fid) 
    	{
    		//先查再删除
    		Family f = this.getHibernateTemplate().get(Family.class, fid);
    		this.getHibernateTemplate().delete(f);		
    	}	
    }
    

      

    package com.etc.entity;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Family entity. @author MyEclipse Persistence Tools
     */
    
    public class Family implements java.io.Serializable {
    
    	// Fields
    
    	private Integer fid;
    	private String fname;
    	private Float wealth;
    	private Set pets = new HashSet(0);
    
    	 
    	// Constructors
    
    	/** default constructor */
    	public Family() {
    	}
    
    	/** minimal constructor */
    	public Family(Float wealth) {
    		this.wealth = wealth;
    	}
    
    	/** full constructor */
    	public Family(String fname, Float wealth, Set pets) {
    		this.fname = fname;
    		this.wealth = wealth;
    		this.pets = pets;
    	}
    
    	// Property accessors
    
    	public Integer getFid() {
    		return this.fid;
    	}
    
    	public void setFid(Integer fid) {
    		this.fid = fid;
    	}
    
    	public String getFname() {
    		return this.fname;
    	}
    
    	public void setFname(String fname) {
    		this.fname = fname;
    	}
    
    	public Float getWealth() {
    		return this.wealth;
    	}
    
    	public void setWealth(Float wealth) {
    		this.wealth = wealth;
    	}
    
    	public Set getPets() {
    		return this.pets;
    	}
    
    	public void setPets(Set pets) {
    		this.pets = pets;
    	}
    
    }
    

      

    package com.etc.entity;
    
    /**
     * Pet entity. @author MyEclipse Persistence Tools
     */
    
    public class Pet implements java.io.Serializable {
    
    	// Fields
    
    	private Integer pid;
    	private Family family;
    	private String pname;
    	private Float price;
    	private Integer cohesion;
    
    	// Constructors
    
    	/** default constructor */
    	public Pet() {
    	}
    
    	/** minimal constructor */
    	public Pet(Family family, Float price, Integer cohesion) {
    		this.family = family;
    		this.price = price;
    		this.cohesion = cohesion;
    	}
    
    	/** full constructor */
    	public Pet(Family family, String pname, Float price, Integer cohesion) {
    		this.family = family;
    		this.pname = pname;
    		this.price = price;
    		this.cohesion = cohesion;
    	}
    
    	// Property accessors
    
    	public Integer getPid() {
    		return this.pid;
    	}
    
    	public void setPid(Integer pid) {
    		this.pid = pid;
    	}
    
    	public Family getFamily() {
    		return this.family;
    	}
    
    	public void setFamily(Family family) {
    		this.family = family;
    	}
    
    	public String getPname() {
    		return this.pname;
    	}
    
    	public void setPname(String pname) {
    		this.pname = pname;
    	}
    
    	public Float getPrice() {
    		return this.price;
    	}
    
    	public void setPrice(Float price) {
    		this.price = price;
    	}
    
    	public Integer getCohesion() {
    		return this.cohesion;
    	}
    
    	public void setCohesion(Integer cohesion) {
    		this.cohesion = cohesion;
    	}
    
    }
    

      

    <?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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.etc.entity.Family" table="family" catalog="java">
            <id name="fid" type="java.lang.Integer">
                <column name="fid" />
                <generator class="identity" />
            </id>
            <property name="fname" type="java.lang.String">
                <column name="fname" length="20" />
            </property>
            <property name="wealth" type="java.lang.Float">
                <column name="wealth" precision="12" scale="0" not-null="true" />
            </property>
            <!-- 关联对象集合的配置,默认是lazy=true,延迟加载 .通过cascade配置成关联对象的级联添加-->
                    
            <set name="pets" inverse="true" lazy="true" cascade="save-update,delete">
                <key>
                    <column name="fid" not-null="true" />
                </key>
                <one-to-many class="com.etc.entity.Pet" />
            </set>
        </class>
    </hibernate-mapping>
    

      

    <?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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.etc.entity.Pet" table="pet" catalog="java">
            <id name="pid" type="java.lang.Integer">
                <column name="pid" />
                <generator class="identity" />
            </id>
            <many-to-one name="family" class="com.etc.entity.Family" fetch="select">
                <column name="fid" not-null="true" />
            </many-to-one>
            <property name="pname" type="java.lang.String">
                <column name="pname" length="20" />
            </property>
            <property name="price" type="java.lang.Float">
                <column name="price" precision="12" scale="0" not-null="true" />
            </property>
            <property name="cohesion" type="java.lang.Integer">
                <column name="cohesion" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    

      

    package com.etc.test;
    
    import java.io.IOException;
    import java.util.HashSet;
    import java.util.Set;
    
    import org.junit.Test;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.etc.action.FamilyAction;
    import com.etc.entity.Family;
    import com.etc.entity.Pet;
    
    public class TestFamliyAction 
    {
    	BeanFactory fac = new ClassPathXmlApplicationContext("applicationContext.xml");
    	FamilyAction action = (FamilyAction) fac.getBean("familyaction");
    	
    	//@Test
    	public void test_findAll()
    	{
    		System.out.println(action.findall());		
    		System.out.println(action.getList().size());
    	}
    	//@Test
    	public void test_add()
    	{
    		//使用创建对象,模拟表单的输入
    		Family f = new Family(10000f);
    		f.setFname("辛普森一家");
    		
    		Set<Pet> pets = new HashSet<Pet>();
    		pets.add(new Pet(f,"蜥蜴",20f,5));
    		f.setPets(pets);
    		
    		action.setFamily(f);
    		System.out.println(action.add()); //调用添加的控制器方法
    		
    		//调用查询全部方法,判断有没有成功
    		System.out.println(action.findall());		
    		System.out.println(action.getList().size());
    	}
    	@Test
    	public void test_delpet() throws IOException
    	{
    		Pet p = new Pet();
    		p.setPid(2);
    		action.setPet(p);
    		System.out.println(action.delpet());
    	}
    }
    

      

    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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"> </property> </bean> <bean id="dao" class="com.etc.dao.imp.FamilyDaoImp"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="biz" class="com.etc.biz.imp.FamilyBizImp"> <property name="dao" ref="dao"></property> </bean> <bean id="familyaction" class="com.etc.action.FamilyAction" scope="prototype"> <property name="biz" ref="biz"/> </bean> <bean id="tm" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:advice id="myadvice" transaction-manager="tm"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="find*" read-only="true"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* com.etc.biz.*.*(..))" id="mypc"/> <aop:advisor advice-ref="myadvice" pointcut-ref="mypc"/> </aop:config> </beans>

      

    struts.xml:
    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="p" namespace="/" extends="struts-default"> <action name="*" class="familyaction" method="{1}"> <result name="findall_success"> /showlist.jsp </result> <result name="add_success" type="chain"> <param name="actionName">findall</param> <param name="namespace">/</param> </result> <result name="toupdate_success"> /update_family.jsp </result> <result name="update_success" type="chain"> <param name="actionName">findall</param> <param name="namespace">/</param> </result> <result name="addpet_success" type="stream"> </result> <result name="delpet_success" type="stream"> </result> <result name="delete_success" type="chain"> <param name="actionName">findall</param> <param name="namespace">/</param> </result> <result name="input"> /show_input_error.jsp </result> <result name="my_error"> /show_my_error.jsp </result> </action> </package> </struts>

      

    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">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <context-param>  <!-- 配置全局的配置参数 ,spring配置文件的位置 --> 
      	<param-name>
      	contextConfigLocation
      	</param-name>
      	<param-value>
      	classpath:applicationContext.xml
      	</param-value>
      </context-param>
      <!-- 通过spring提供的web监听器来启动对象工厂 -->
      <listener>
      	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
      </listener>
      <!-- 声明1个延迟加载过滤器 -->
      <filter>
      	<filter-name>lazyFilter</filter-name>	
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        <init-param>
        	<param-name>singleSession</param-name>
        	<param-value>false</param-value>
        </init-param>
      </filter>
      <!--设定过滤器只对.action请求有效 -->
      <filter-mapping>
      <filter-name>lazyFilter</filter-name>
      <url-pattern>*.action</url-pattern>
      </filter-mapping>
      <filter>
      	<filter-name>struts2</filter-name>
      	<filter-class>
      		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      	</filter-class>
      </filter>
      <filter-mapping>
      	<filter-name>struts2</filter-name>
      	<url-pattern>*.action</url-pattern>
      </filter-mapping></web-app>
    

      

    <%@ 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 'add_famliy.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="add.action" method="post">
        家庭名: <input name="family.fname" /> <br/>
      财产:   <input name="family.wealth"/><br/>
    宠物名:  <input name="pets[0].pname">
    宠物价格:  <input name="pets[0].price">
    亲密度:  <input name="pets[0].cohesion">
     <input type="button" value="+"/>
    <br/>
         <input type="submit" value="添加"/>
        </form>
      </body>
    </html>
    

      

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    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 'showlist.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>
       <script>
       alert('输入有误!');
       history.go(-1);
       </script>
      
    	<s:fielderror/>	       
            
      </body>
    </html>
    

      

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    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 'showlist.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>
       <script>
       alert("${msg}");
       location.href="findall.action";
       </script>
      
    	<s:fielderror/>	       
            
      </body>
    </html>
    

      

    <%@ page language="java" import="java.util.*,com.etc.entity.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    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 'showlist.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>
      <script>
      	function showmsg(isshow,msg)
      	{
      		if(isshow)
      			alert(msg);
      	}
      
      </script>
      <body onload="showmsg(${isshow},'${msg}')">
            家庭信息<br/>
            <table border="1">
            <tr>
            	<th>编号</th>
            	<th>名称</th>
            	<th>资产</th>
            	<th>宠物数</th>
            	<th>操作</th>
            </tr>
           <s:iterator value="list" var="f">
           		<tr>
           			<td>${f.fid }</td>
           			<td>${f.fname }</td>
           			<td>${f.wealth }</td>
           			<td>
           				<%= ((Family) request.getAttribute("f")).getPets().size() %>
           			</td>
           			<td><a href="delete.action?family.fid=${f.fid}">删除</a> 
           			
           			<a href="toupdate.action?family.fid=${f.fid}">修改</a></td>       		
           		</tr>
           
           </s:iterator>
            
            </table>
            <br/>
            <a href="add_family.jsp">添加</a>
            
      </body>
    </html>
    

      

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <%
    	String path = request.getContextPath();
    	String basePath = request.getScheme() + "://"
    			+ request.getServerName() + ":" + request.getServerPort()
    			+ path + "/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <style>
    input 
    {
    	 60px;	
    }
    
    </style>
    	<head>
    		<base href="<%=basePath%>">
    
    		<title>My JSP 'add_famliy.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>
    	<script type="text/javascript" src="js/jquery.js">
    	</script>
    	<script>	
    	$(document).ready(
    		function()
    		{
    			$("#add").click(
    				function()
    				{
    					addnew();
    				}
    			);
    		}
    	
    	)
    	function addnew()
    	{
    		var pname = window.prompt("宠物名","宠物名");
    		if(pname==null)
    			return;
    		var price = window.prompt("价格","100");
    		if(price==null)
    			return;
    		var cohesion = window.prompt("亲密度","50");
    		if(price==null)
    			return;
    		var msg = pname+","+price+","+cohesion+",确认添加 ?";
    		
    		if (window.confirm(msg))
    			send_ajax_add_request(pname,price,cohesion);										
    	}
    	function send_ajax_add_request(pname,price,cohesion)
    	{
    		var paras = "pet.pname="+pname+"&pet.price="
    		+price+"&pet.cohesion="+cohesion+"&family.fid=${family.fid}";
    		$.ajax(
    			{
    				type:"post",
    				url:"addpet.action",
    				data:paras,
    				dataType:"json",
    				success:function(obj)
    				{
    					var old = $("#sp").html();
    					var html = "<span id='inner_sp_"+obj.pid+"'>" 
    						+"编号:  <input name='pets["+petcount+"].pid' value='"+obj.pid+"' readonly='readonly'>"
    				        +"宠物名:  <input name='pets["+petcount+"].pname' value='"+obj.pname+"'>"
    				 		+"宠物价格:  <input name='pets["+petcount+"].price' value='"+obj.price+"'>"
    						+"亲密度:  <input name='pets["+petcount+"].cohesion' value='"+obj.cohesion+"'>"
    						+"<input type='button' value='删除' onclick='send_ajax_delete_request("+obj.pid+")'/><br/>"
    						+"</span>";
    					$("#sp").html(old+html);
    					
    					petcount++;					
    				}
    			}
    		);
    	}
    	
    	function send_ajax_delete_request(pid)
    	{
    		var paras = "pet.pid="+pid;
    		var url = "delpet.action";
    		$.post(url, { "pet.pid": pid},
       			function(txt){
       				if(txt=="1")
         				$("#inner_sp_"+pid).remove();
       			});	
    	}
    	
    	</script>
    	<body>
    
    		<form action="update.action" method="post"> 
    			编号: 
    			<input name="family.fid" readonly="readonly" value="${family.fid }" />
    			<br />
    			家庭名:
    			<input name="family.fname" value="${family.fname }"/>
    			<br />
    			财产:
    			<input name="family.wealth" value="${family.wealth }"/>
    			<br />
    			
    			<s:set var="i" value="0"/>
    			<span id="sp">
    			<s:iterator value="family.pets" var="p">
    				<span id="inner_sp_${p.pid}">
    				编号:  <input name="pets[${i}].pid" value="${p.pid }" readonly="readonly">
    				宠物名:  <input name="pets[${i}].pname" value="${p.pname }">
    				宠物价格:  <input name="pets[${i}].price" value="${p.price }">
    				亲密度:  <input name="pets[${i}].cohesion" value="${p.cohesion }">
    				<s:set var="i" value="#attr.i+1"/>
    				<input type="button" value="删除" onclick="send_ajax_delete_request(${p.pid })" /><br/>
    				</span>
    			</s:iterator>
    			</span>
    <script>
    var petcount = ${i}; //记录总的宠物个数
    </script>
    			
    			<br />
    			<input id="add" type="button" value="添加宠物"/><br/>
    			<input type="submit" value="修改" />
    		</form>
    	</body>
    </html>
    

      

  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6251028.html
Copyright © 2011-2022 走看看