Posted on 2008-04-09 12:54
lcc 阅读(1256)
评论(0) 编辑 收藏
几个spring+ajax实现的小功能
代码片段:
web.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<web-app id="WebApp_ID" version="2.4"
3
xmlns="http://java.sun.com/xml/ns/j2ee"
4
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
6
7
<!--设置环境变量,将应用程序目录存储到环境变量中-->
8
<context-param>
9
<param-name>webAppRootKey</param-name>
10
<param-value>webapp.root</param-value>
11
</context-param>
12
13
<!--设置环境变量指定log4j的配置文件-->
14
<context-param>
15
<param-name>log4jConfigLocation</param-name>
16
<param-value>/WEB-INF/log4j.properties</param-value>
17
</context-param>
18
19
<!--设置环境变量指定applicationContext.xml配置文件-->
20
<context-param>
21
<param-name>contextConfigLocation</param-name>
22
<param-value>
23
/WEB-INF/applicationContext.xml
24
</param-value>
25
</context-param>
26
27
<!--设置log4j的监听,使日志组件能够使用,调用log4jConfigLocation中设置的环境变量-->
28
<listener>
29
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
30
</listener>
31
32
<!--设置context的监听,启动时加载applicationContext.xml文件,初始化applicationContext实例-->
33
<listener>
34
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
35
</listener>
36
37
<!--文件上传时临时文件清除监听-->
38
<listener>
39
<listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class>
40
</listener>
41
42
<!--设置字符串过滤器,解决表单Post提交中的乱码问题-->
43
<filter>
44
<filter-name>characterEncoding</filter-name>
45
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
46
<init-param>
47
<param-name>encoding</param-name>
48
<param-value>utf-8</param-value>
49
</init-param>
50
<init-param>
51
<param-name>forceEncoding</param-name>
52
<param-value>true</param-value>
53
</init-param>
54
</filter>
55
<filter-mapping>
56
<filter-name>characterEncoding</filter-name>
57
<url-pattern>/*</url-pattern>
58
</filter-mapping>
59
60
<!--设置jsp,htm,html页面的字符集,是否使用标签,是否使用jsp脚本等,头尾载入页面等-->
61
<jsp-config>
62
<jsp-property-group>
63
<description>指定JSP文件的配置属性</description>
64
<display-name>jspConfiguration</display-name>
65
<url-pattern>*.jsp</url-pattern>
66
<el-ignored>false</el-ignored>
67
<page-encoding>utf-8</page-encoding>
68
<scripting-invalid>false</scripting-invalid>
69
</jsp-property-group>
70
71
<jsp-property-group>
72
<description>指定htm文件的配置属性</description>
73
<display-name>jspConfiguration</display-name>
74
<url-pattern>*.htm</url-pattern>
75
<el-ignored>false</el-ignored>
76
<page-encoding>utf-8</page-encoding>
77
<scripting-invalid>false</scripting-invalid>
78
</jsp-property-group>
79
80
<jsp-property-group>
81
<description>指定html文件的配置属性</description>
82
<display-name>jspConfiguration</display-name>
83
<url-pattern>*.html</url-pattern>
84
<el-ignored>false</el-ignored>
85
<page-encoding>utf-8</page-encoding>
86
<scripting-invalid>false</scripting-invalid>
87
</jsp-property-group>
88
89
</jsp-config>
90
<!--===============================================================-->
91
<servlet>
92
<servlet-name>ajax</servlet-name>
93
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
94
<init-param>
95
<param-name>contextConfigLocation</param-name>
96
<param-value>/WEB-INF/servlet-ajax.xml</param-value>
97
</init-param>
98
</servlet>
99
<servlet-mapping>
100
<servlet-name>ajax</servlet-name>
101
<url-pattern>*.ajax</url-pattern>
102
</servlet-mapping>
103
104
<servlet>
105
<servlet-name>dwr-invoker</servlet-name>
106
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
107
<init-param>
108
<param-name>debug</param-name>
109
<param-value>true</param-value>
110
</init-param>
111
</servlet>
112
<servlet-mapping>
113
<servlet-name>dwr-invoker</servlet-name>
114
<url-pattern>/dwr/*</url-pattern>
115
</servlet-mapping>
116
117
<!--会话的时间-->
118
<session-config>
119
<session-timeout>30</session-timeout>
120
</session-config>
121
122
<!-- 欢迎页面 -->
123
<welcome-file-list>
124
<welcome-file>index.jsp</welcome-file>
125
</welcome-file-list>
126
127
</web-app>
128
applicationContext.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<beans xmlns="http://www.springframework.org/schema/beans"
3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
xmlns:aop="http://www.springframework.org/schema/aop"
5
xmlns:tx="http://www.springframework.org/schema/tx"
6
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
7
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
8
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
9
10
<!--返回的视图资源的前缀和后缀,基于Jstl模板-->
11
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
12
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
13
<property name="prefix" value="/WEB-INF/jsp/"/>
14
</bean>
15
16
<!--启动加载异常处理的类,用于监听各模块中触发的异常-->
17
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
18
<property name="defaultErrorView" value="error.jsp"/>
19
</bean>
20
21
<!--加载properties配置文件-->
22
<!--<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">-->
23
<!--<property name="locations">-->
24
<!--<list>-->
25
<!--<value>WEB-INF/jdbc.properties</value>-->
26
<!--</list>-->
27
<!--</property>-->
28
<!--</bean>-->
29
30
<!--数据源-->
31
<!--<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">-->
32
<!--<property name="driverClassName" value="${jdbc.driverClassName}"/>-->
33
<!--<property name="url" value="${jdbc.url}"/>-->
34
<!--<property name="username" value="${jdbc.username}"/>-->
35
<!--<property name="password" value="${jdbc.password}"/>-->
36
<!--</bean>-->
37
38
<!--事务管理器-->
39
<!--<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
40
<!--<property name="dataSource" ref="dataSource"/>-->
41
<!--</bean>-->
42
43
<!--aop代理,对所有以Logic为后缀文件名的接口类进行代理-->
44
<!--<aop:config>-->
45
<!--<aop:advisor pointcut="execution(* *..*Logic.*(..))" advice-ref="txAdvice"/>-->
46
<!--</aop:config>-->
47
48
<!--数据库事务代理,对类中的指定前缀的方法进行事务控制-->
49
<!--<tx:advice id="txAdvice" transaction-manager="txManager">-->
50
<!--<tx:attributes>-->
51
<!--<tx:method name="insert*"/>-->
52
<!--<tx:method name="update*"/>-->
53
<!--<tx:method name="delete*"/>-->
54
<!--<tx:method name="upload*"/>-->
55
<!--<tx:method name="*" read-only="true"/>-->
56
<!--</tx:attributes>-->
57
<!--</tx:advice>-->
58
59
<bean id="ajaxLogic" class="cn.idtag.logic.AjaxLogicImpl"/>
60
</beans>
61
servlet-ajax.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<beans xmlns="http://www.springframework.org/schema/beans"
3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
5
6
<import resource="applicationContext.xml"/>
7
8
<bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
9
10
<bean name="/index.ajax" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
11
<property name="viewName" value="index.jsp"/>
12
</bean>
13
14
<!--无拦截请求-->
15
<bean id="noInterceptors" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
16
<property name="mappings">
17
<props>
18
<prop key="adminLogin.ajax">ajaxController</prop>
19
<prop key="checkPhone.ajax">ajaxController</prop>
20
<prop key="dataList.ajax">ajaxController</prop>
21
<prop key="selectList.ajax">ajaxController</prop>
22
<prop key="rssAddress.ajax">ajaxController</prop>
23
24
</props>
25
</property>
26
</bean>
27
28
<!--请求与方法映射控制器-->
29
<bean id="ajaxController" class="cn.idtag.core.LogicController">
30
<property name="logicClass" ref="ajaxLogic"/>
31
<property name="uriMethodMapping">
32
<props>
33
<prop key="adminLogin">initLogin</prop>
34
<prop key="checkPhone">checkPhone</prop>
35
<prop key="dataList">dataList</prop>
36
<prop key="selectList">selectList</prop>
37
<prop key="rssAddress">rssAddress</prop>
38
</props>
39
</property>
40
</bean>
41
42
</beans>
43
index.jsp
1
<script src="js/common/window.js"></script>
2
<script src="js/common/prototype.js"></script>
3
<script src="js/common/ajaxExpand.js"></script>
4
<html>
5
<title> Ajax </title>
6
<script type="text/javascript">
7
function checkPhonePost()
{
8
new Ajax.Request('checkPhone.ajax',
9
{method:'post',parameters:$('phoneForm').serialize(),onCreate:AjaxExpand.createProgress('p1'),onComplete:function(transport)
{
10
//alert("载入中
");
11
AjaxExpand.destroyProgress('p1');
12
if(transport.status==200)
{
13
var result = transport.responseText;
14
if(result=='1') $('p1').innerHTML = "<img src='images/icon1.gif'/><font style='vertical-align:4px;font-size:12;color:gray;'>手机号不能为空!</font>";
15
if(result=='2') $('p1').innerHTML = "<img src='images/icon2.gif'/><font style='vertical-align:4px;font-size:12;color:gray;'>手机号已被使用!</font>";
16
if(result=='3') $('p1').innerHTML = "<img src='images/icon3.gif'/><font style='vertical-align:4px;font-size:12;color:gray;'>手机号正确!</font>";
17
}else
{
18
alert('系统忙!');
19
}
20
}});
21
}
22
function checkPhoneGet()
{
23
new Ajax.Request('checkPhone.ajax?phone='+$F('phone'),
{method:'get',onComplete:function(transport)
{
24
var result = transport.responseText;
25
alert(result);
26
}});
27
}
28
</script>
29
<script type="text/javascript">
30
function dateListPost()
{
31
$('dateListDiv').innerHTML = '';
32
new Ajax.Request('dataList.ajax',
{method:'post',parameters:$('dateList').serialize(),onCreate:function(transport)
{AjaxExpand.createProgress('p2');Form.disable('dateList')},onComplete:function(transport)
{
33
AjaxExpand.destroyProgress('p2');
34
if(transport.status==200)
{
35
var result = transport.responseText;
36
$('dateListDiv').innerHTML = result;
37
}else
{
38
alert('系统忙!')
39
}
40
Form.enable('dateList');
41
}});
42
}
43
</script>
44
<script type="text/javascript">
45
function selectListPost()
{
46
new Ajax.Request('selectList.ajax',
{method:'post',parameters:$('selectList').serialize(),onComplete:function(transport)
{
47
if(transport.status==200)
{
48
var result = transport.responseText;
49
this.selectList = eval("(" + result + ")");
50
removeOption('select2');
51
for(var i=0;i<this.selectList.length;i++)
{
52
var temp = this.selectList[i];
53
var oOption = document.createElement("OPTION");
54
$('select2').options.add(oOption);
55
oOption.text = temp.nicheng;
56
oOption.value=temp.idtagcode;
57
}
58
}else
{
59
alert('系统忙!')
60
}
61
}});
62
}
63
function removeOption(id)
{
64
var select=$(id);
65
var options = select.options;
66
var count = options.length;
67
for(var i=1;i<count;i++)
{
68
select.remove(1);
69
}
70
select.options[0].selected=true;
71
}
72
</script>
73
<script type="text/javascript">
74
function lockPost()
{
75
new Ajax.Request('dataList.ajax',
{method:'post',onCreate:function(transport)
{AjaxExpand.addLightboxMarkup('500','200')},onComplete:function(transport)
{
76
if(transport.status==200)
{
77
var result = transport.responseText;
78
$('lightbox').innerHTML = result;
79
}else
{
80
alert('系统忙!');
81
AjaxExpand.removeLightboxMarkup();
82
}
83
}});
84
}
85
</script>
86
<script>
87
function rss()
{
88
new Ajax.Request('rssAddress.ajax?rssAddress='+$F('rssAddress'),
{method:'get',onComplete:function(transport)
{
89
if(transport.status==200)
{
90
$('rssDiv').innerHTML = "";
91
var xml = transport.responseXML;
92
var rss = xml.getElementsByTagName("rss")[0];
93
var channel = rss.getElementsByTagName("channel")[0];
94
var items = rss.getElementsByTagName("item");
95
for(var i=0; i<items.length; i++)
{
96
var title = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
97
var link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
98
$('rssDiv').innerHTML += "<a style='font-size:12px' href="+link+" target='_blank'>"+"第"+(i+1)+"篇 "+title+"</a><br>";
99
}
100
}else
{
101
alert('系统忙!');
102
}
103
}});
104
}
105
</script>
106
107
<body>
108
<div id="divDrag_module_1">
109
<fieldset style="width:500">
110
<legend class="divDrag_module">手机号输入重复校验</legend>
111
<form id="phoneForm" name="phoneForm">
112
请输入手机号码:<input id="phone" name="phone" type="text" value="13311112222" onblur="checkPhonePost();"/>
113
<input type="button" value="开始校验" onclick="checkPhonePost();"><span id="p1"></span>
114
</form>
115
</fieldset>
116
<br><br>
117
</div>
118
119
<div id="divDrag_module_2">
120
<fieldset style="width:500px">
121
<legend style="color:red" class="divDrag_module">数据列表</legend>
122
<br>
123
<form id="dateList">
124
请输入身份通号:<input id="idtagcode" name="idtagcode" type="text" size="10"/>----
125
请输入昵称:<input id="nicheng" name="nicheng" type="text" size="10"/>
126
<input id="buttonName" type="button" value="查询" onclick="dateListPost();">
127
</form>
128
<span id="p2"></span>
129
<div id="dateListDiv"></div>
130
</fieldset>
131
<br><br>
132
</div>
133
134
<div id="divDrag_module_3">
135
<fieldset style="width:500px">
136
<legend style="color:red" class="divDrag_module">联动菜单</legend>
137
<br>
138
<form id="selectList">
139
<select id="select1" name="select1" onchange="selectListPost()">
140
<option>--请选择--</option>
141
<option value="1">第一个</option>
142
<option value="2">第二个</option>
143
<option value="3">第三个</option>
144
</select>
145
<select id="select2" name="select2">
146
<option>--请选择--</option>
147
</select>
148
</form>
149
</fieldset>
150
<br><br>
151
</div>
152
153
<div id="divDrag_module_4">
154
<fieldset style="width:500px">
155
<legend style="color:red" class="divDrag_module">屏幕锁定</legend>
156
<br>
157
<input id="buttonLock" type="button" value="锁定" onclick="lockPost()">
158
</fieldset>
159
<br><br>
160
</div>
161
162
<div id="divDrag_module_5">
163
<fieldset style="width:320px">
164
<legend style="color:red" class="divDrag_module">组件控制</legend>
165
<br>
166
手机号输入重复校验 【<a href="###" onclick="dragHandlers.showDragModule('divDrag_module_1')">显示</a> <a href="###" onclick="dragHandlers.hiddenDragModule('divDrag_module_1')">隐藏</a> <a href="###" onclick="dragHandlers.cloneDragModule('divDrag_module_1')">克隆</a>】<br><br>
167
数据列表 【<a href="###" onclick="dragHandlers.showDragModule('divDrag_module_2')">显示</a> <a href="###" onclick="dragHandlers.hiddenDragModule('divDrag_module_2')">隐藏</a>】<br><br>
168
联动菜单 【<a href="###" onclick="dragHandlers.showDragModule('divDrag_module_3')">显示</a> <a href="###" onclick="dragHandlers.hiddenDragModule('divDrag_module_3')">隐藏</a>】<br><br>
169
屏幕锁定 【<a href="###" onclick="dragHandlers.showDragModule('divDrag_module_4')">显示</a> <a href="###" onclick="dragHandlers.hiddenDragModule('divDrag_module_4')">隐藏</a>】
170
</fieldset>
171
<br><br>
172
</div>
173
<br><br>
174
175
<div id="divDrag_module_6">
176
<fieldset style="width:500px">
177
<legend style="color:red" class="divDrag_module">RSS</legend>
178
<br>
179
<input id="rssAddress" name="rssAddress" type="text" size="20" value="http://blog.sina.com.cn/rss/xujinglei.xml"/>
180
<input type="button" value="解析RSS" onclick="rss();">
181
<div id="rssDiv"></div>
182
</fieldset>
183
<br><br>
184
</div>
185
186
</body>
187
</html>
error.jsp
1
<%
@include file="/WEB-INF/jsp/inc/tld.jsp"%>
2
<html>
3
<head>
4
</head>
5
<body>
6
<font style="font-size:20;font-weight:bold;">系统出现异常</font>
7
<br>
8
<font style="font-size:16;font-weight:bold;" color="red">exception.class:</font>
9
<font style="font-size:16" color="red"><c:out value="${exception.class}"/></font>
10
<br>
11
<font style="font-size:16;font-weight:bold;" color="red">exception.message:</font>
12
<font style="font-size:16" color="red"><c:out value="${exception.message}"/></font>
13
</body>
14
</html>
dataList.jsp
1
<%
@ include file="/WEB-INF/jsp/inc/tld.jsp" %>
2
<c:if test="${fn:length(dataList)!=0}">
3
<table width="400" border="1" cellpadding="0" cellspacing="1" bordercolor="#333333">
4
<tr bgcolor="#666666">
5
<td width="185" height="25" align="center">编号</td>
6
<td width="209" align="center">昵称</td>
7
</tr>
8
<c:forEach var="data" items="${dataList}" varStatus="status">
9
<tr>
10
<td><c:out value="${data.idtagcode}"/> </td>
11
<td><c:out value="${data.nicheng}"/> </td>
12
</tr>
13
</c:forEach>
14
</table>
15
</c:if>
16
<div align=center><input type=button value=解锁 onclick=AjaxExpand.removeLightboxMarkup()></div>