struts2+hibernate+spring+DWRUtilAction+dwr分页+Google自动补全

项目处于招标期间,所以比较清闲,于是乎有了对自己知识总结的想法,又于是乎经历了.......

 

下载把重要代码贴出来给需要的同仁们参考参考(只供菜鸟参考,因为我也很菜)

首先是web.xml配置文件

<!--注释的为oscache缓存-->

<?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">
    <!-- 配置Spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/classes/com/jack/user/config/dao.xml
            WEB-INF/classes/com/jack/user/config/servicesContext.xml
        </param-value>
    </context-param>
    <!-- 配置Struts2 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 配置DWR -->
    <!-- dwr的servlet配置 add by jie.su-->
    <servlet>
        <servlet-name>dwr</servlet-name>
        <!-- org.directwebremoting.spring.DwrSpringServlet -->
        <servlet-class>
            org.directwebremoting.servlet.DwrServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
            <!--开发时设为true,生产时设为false-->
        </init-param>
        <init-param>
            <param-name>crossDomainSessionSecurity</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>exposeInternals</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
  <servlet>
    <servlet-name>Validate</servlet-name>
    <servlet-class>com.jack.user.common.Validate</servlet-class>
  </servlet>

    <servlet-mapping>
        <servlet-name>dwr</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Validate</servlet-name>
    <url-pattern>/servlet/Validate</url-pattern>
  </servlet-mapping>
    <!-- dwr的servlet配置 -->
    <!-- 配置Spring的监听 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <!--osehcache缓存首页配置 begin  -->
    <!--<filter>
       
        <filter-name>CacheFilter</filter-name>
       
        <filter-class>
        com.opensymphony.oscache.web.filter.CacheFilter
        </filter-class>
       
        <init-param>
       
        <param-name>time</param-name>
       
        <param-value>600</param-value>
       
        </init-param>
       
        <init-param>
       
        <param-name>scope</param-name>
       
        <param-value>session</param-value>
       
        </init-param>
       
        </filter>
       
        <filter-mapping>
       
        <filter-name>CacheFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
       
        </filter-mapping>
    --><!-- osehcache缓存首页配置 end -->
</web-app>
 

 

dwr配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">
<dwr>
    <allow>
        <convert match="java.lang.StackTraceElement" converter="bean" />
        <convert match="java.lang.Exception" converter="exception"></convert>
        <create creator="none" javascript="DWRAction">
            <param name="class"
                value="org.directwebremoting.struts2.DWRAction" />
            <include method="execute" />
        </create>
        <convert converter="bean"
            match="com.opensymphony.xwork2.ValidationAwareSupport" />
        <convert converter="bean"
            match="org.directwebremoting.struts2.ActionDefinition">
            <param name="include"
                value="namespace,action,method,executeResult" />
        </convert>
        <convert converter="bean"
            match="org.directwebremoting.struts2.AjaxResult" />
        <!-- 相应的Struts2的Action -->
        <convert match="com.jack.user.action.DWRDemoAction"
            converter="bean" />
        <convert match="com.jack.user.pojo.*" converter="bean"/>
        <convert match="com.jack.user.action.*" converter="bean"/>
       
        <!-- 用户名验证 -->
        <create javascript="validator" creator="new">
            <param name="class"
                value="com.jack.user.model.impl.ValidatorUser">
            </param>
        </create>
        <create javascript="testDwr" creator="new">
            <param name="class"
                value="com.jack.user.model.impl.TestDwr">
            </param>
        </create>
        <!-- 商品拼音取码 -->
    </allow>
</dwr>
 

 

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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <package name="user" extends="struts-default" namespace="/user">
    <interceptors>
    <interceptor name="doInterceptor" class="doInterceptor"></interceptor>
    </interceptors>
        <!-- 用户登录 -->
        <action name="userLogin" class="loginAction"
            method="userLogin">
           
            <interceptor-ref name="doInterceptor"></interceptor-ref>
             <interceptor-ref  name ="params" />
            <interceptor-ref  name ="static-params" />
           
            <result name="success" type="redirect">/Merchandise.jsp</result>
            <result name="noUser">/login.jsp</result>
            <result name="login">/login.jsp</result>
        </action>
        <!-- 普通用户注册用户名和密码,不做具体操作,只是把用户名和密码放在会话中 -->
        <action name="saveAccount" class="loginAction"
            method="saveAccount">
            <result name="success">/userInfor.jsp</result>
            <result name="error">/register.jsp</result>
        </action>
        <!-- 普通用户注册完成 -->
        <action name="register" class="loginAction"
            method="userRegister">
            <result name="success">/welcome.jsp</result>
            <result name="error">/register.jsp</result>
        </action>
        <!-- 企业用户注册用户名和密码,不做具体操作,只是把用户名和密码放在会话中 -->
        <action name="saveEnAccount" class="loginAction"
            method="saveEnAccount">
            <result name="success">/enInfor.jsp</result>
            <result name="error">/enRegister.jsp</result>
        </action>
        <!-- 企业用户完成注册 -->
        <action name="enRegister" class="loginAction"
            method="enRegister">
            <result name="success">/welcome.jsp</result>
            <result name="error">/enRegister.jsp</result>
        </action>
        <action name="fileUpload" class="fileUpload">
            <interceptor-ref name="fileUpload">
                <param name="allowedTypes">
                    image/bmp,image/png,image/gif,image/jpeg,image/jpg
                </param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>
            <result name="input">/fileupload.jsp</result>
            <result name="success">/showUpload.jsp</result>
        </action>
        <action name="dwrDemoAction" class="dwrDemoAction"> </action>
       
        <action name="merchandiseAction" class="merchandiseAction" method="saveMer">
           <result name="success">/Merchandise.jsp</result>
           <result name="error">/error.jsp</result>
        </action>
       
        <action name="merchandiseSearchAction" class="merchandiseSearchAction">
           <result name="success">/dt.jsp</result>
           <result name="error">/error.jsp</result>
        </action>
       
        <action name="merchandiseDeleteAction" class="merchandiseDeleteAction">
           <result name="success">/Merchandise.jsp</result>
           <result name="error">/error.jsp</result>
        </action>
       
        <action name="merchandiseFindByIdAction" class="merchandiseFindByIdAction">
           <result name="success">/Merchandise.jsp</result>
           <result name="error">/error.jsp</result>
        </action>
       
        <action name="merchandiseUpdateAction" class="merchandiseUpdateAction">
           <result name="success">/Merchandise.jsp</result>
           <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>
 

 

分页标签

package com.jack.user.common;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class PagTag extends BodyTagSupport {

    private String uri;

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    @Override
    public int doAfterBody() throws JspException {
        // TODO Auto-generated method stub
        return super.doAfterBody();
    }

    @Override
    public int doEndTag() throws JspException {
        // TODO Auto-generated method stub
        return super.doEndTag();
    }

    @Override
    public int doStartTag() throws JspException {
        // TODO Auto-generated method stub
        HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
        int pageNow = 1;
        int pageCount = 1;
        int count = 1;
        String temp = (String) request.getAttribute("pageNow");
        if (temp != null)
            pageNow = Integer.parseInt(temp);
        temp=(String)request.getAttribute("pageCount");
        if (temp != null)
            pageCount=Integer.parseInt(temp);
        temp=(String)request.getAttribute("count");
        if (temp != null)
            count=Integer.parseInt(temp);
        temp=this.buildPage(uri, pageNow, pageCount, count);
        try {
            this.pageContext.getOut().println(temp);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return this.SKIP_BODY;
    }
   
    public String buildPage(String uri,int pageNow,int pageCount,int count)
    {
        StringBuffer sb = new StringBuffer();
        sb.append("<TABLE  border=\"0\" width=\"100%\">");
        sb.append("<TR>");
        sb.append("<TD align=\"right\" colspan=\"5\"><a href=\"#\" οnclick=\"first();\">首页</a>|");
        if(pageNow<pageCount)
            sb.append("<a href=\"#\" οnclick=\"next("+(pageNow+1)+");\">下一页</a>|");
        else
            sb.append("<font size=\"2\">下一页 </font>|");   
        if(pageNow>1)
            sb.append("<a href=\"#\" οnclick=\"next("+(pageNow-1)+");\">上一页</a>|");
        else
            sb.append("<font size=\"2\">上一页</font>|");
        sb.append("<a href=\"#\" οnclick=\"end("+pageCount+");\">尾页</a>|");
        sb.append("<font size=\"2\">"+pageNow+"/"+pageCount+" 共:"+count+"条</font></TD>");
        sb.append("</TR>");
        sb.append("</TABLE>");
        return sb.toString();
    }

查询Action






package com.jack.user.action;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.jack.user.model.IMerchandiseServices;
import com.opensymphony.xwork2.ActionSupport;

public class MerchandiseSearchAction extends ActionSupport implements
		ServletRequestAware {

	private static final long serialVersionUID = 1351082640259559948L;

	private List list;

	private int pageNow;

	private javax.servlet.http.HttpServletRequest request;

	@SuppressWarnings("unused")
	private IMerchandiseServices merchandiseServices;

	public void setMerchandiseServices(IMerchandiseServices merchandiseServices) {
		this.merchandiseServices = merchandiseServices;
	}

	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

	public String execute() {
		String result = "";
		try {
			int pageSize=5;
			int pageNow=1;
			int pageNowStr=this.getPageNow();
			if(pageNowStr!=1&&pageNowStr!=0)
			{
				pageNow=pageNowStr;
			}
			list = merchandiseServices.searchAllMerchandise(pageSize,pageNow);
			int pageCount=merchandiseServices.getPageCount(pageSize);
			int count=merchandiseServices.getCount();
			request.setAttribute("list",list);
			request.setAttribute("pageNow",pageNow+"");
			request.setAttribute("pageCount",pageCount+"");
			request.setAttribute("count",count+"");
			result = "success";
		} catch (Exception e) {
			// TODO: handle exception
			result = "error";
		}
		return result;
	}
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request = request;
	}

	public int getPageNow() {
		return pageNow;
	}

	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

}








 
}

 页面提交由form表单提交和DWRUtilAction两种提交方式,现在看到的完全由DWRUtilAction方式提交

	function saveMerchandise()
	  {
       if(checkNonEmpty(document.getElementById('name'),'名称'))
        {
           if(checkNonEmpty(document.getElementById('manufacturer'),'厂商'))
              {
               DWRActionUtil.execute({namespace:'/user',action:'merchandiseAction',executeResult:'false'},document.mer,searchMerAll);	
              }
         }
	  }
	function searchMerAll()
	  {
	  DWRActionUtil.execute({namespace:'/user',action:'merchandiseSearchAction',executeResult:'true'},{},cal);	
	  }
	function cal(data)
	  {
	  	  document.getElementById('name').value='';
	  	  document.getElementById('manufacturer').value='';
	  	  document.getElementById('li').innerHTML=data;
	  }
    function dele(id)
    {
      DWRActionUtil.execute({namespace:'/user',action:'merchandiseDeleteAction',executeResult:'false'},{id:id},searchMerAll);	
    }
    function searchById(id)
	 {
	  DWRActionUtil.execute({namespace:'/user',action:'merchandiseFindByIdAction',executeResult:'false'},{id:id},fd);	
	 }
	 function fd(data)
	 {
	   document.getElementById('id').value=data.merchandise.id
	   document.getElementById('name').value=data.merchandise.name
	   document.getElementById('manufacturer').value=data.merchandise.manufacturer
	 }
	 function cl()
	 {
	   document.getElementById('id').value="";
	   document.getElementById('name').value="";
	   document.getElementById('manufacturer').value="";
	 }
	 function updateMerchandise()
	  { if(document.getElementById('id').value==''||document.getElementById('id').value=='undefined'){
	         alert('请选择要修改的信息');
	         return;
		   }else
		   {
		   if(checkNonEmpty(document.getElementById('name'),'名称'))
	        {
	           if(checkNonEmpty(document.getElementById('manufacturer'),'厂商'))
	              {
	              var id=document.getElementById('id').value;
		          var name=document.getElementById('name').value;
		   		  var manufacturer= document.getElementById('manufacturer').value;
	               DWRActionUtil.execute({namespace:'/user',action:'merchandiseUpdateAction',executeResult:'false'},{id:id,name:name,manufacturer:manufacturer},searchMerAll);	
	              }
	         }
		   }
	  }
	  function searchReAll()
	  {
		var allInput = document.getElementsByName("mid");
        var loopTime = allInput.length;
        for(i = 0;i < loopTime;i++)
        {
            if(allInput[i].type == "checkbox")
            {
               	if(allInput[i].checked==true)
               	{
                 allInput[i].checked=false;
               	}else
               	{
                 allInput[i].checked=true;
                }
            }
        }
	  }
	  function batchDel()
	  {
	   var allInput = document.getElementsByName("mid");
       var loopTime = allInput.length;
       var valuetext="";
       for(i=0,num=0;i<loopTime;i++)
        {
            if(allInput[i].checked)
                {
                 valuetext+=(valuetext=="")?allInput[i].value:","+allInput[i].value;
                  num++;
                }
        }
        if(num>0)
        {
            alert(valuetext);
        }
        else
        {
            alert('请选择所要删除商品!');
        }
	  }


由于代码比较多这里就不一一贴出来,如果哪位朋友需要可留Email

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值