基于easyui的 增 删 改 查
来源:互联网 发布:儿童 绘画 推荐 知乎 编辑:程序博客网 时间:2024/05/21 09:40
项目结构图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?
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/web-app_2_5.xsd"
id
=
"WebApp_ID"
version
=
"2.5"
>
<
display-name
>elve</
display-name
>
<
context-param
>
<
param-name
>contextConfigLocation</
param-name
>
<
param-value
>
classpath:app-context.xml
</
param-value
>
</
context-param
>
<
context-param
>
<
param-name
>webAppRootKey</
param-name
>
<
param-value
>demo.root</
param-value
>
</
context-param
>
<
filter
>
<
filter-name
>encodingFilter</
filter-name
>
<
filter-class
>
org.springframework.web.filter.CharacterEncodingFilter
</
filter-class
>
<
init-param
>
<
param-name
>encoding</
param-name
>
<
param-value
>UTF-8</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>encodingFilter</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
<
listener
>
<
listener-class
>
org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
listener
>
<
listener-class
>
com.xs.demo.listener.SessionListener
</
listener-class
>
</
listener
>
<
servlet
>
<
servlet-name
>app</
servlet-name
>
<
servlet-class
>
org.springframework.web.servlet.DispatcherServlet
</
servlet-class
>
<
init-param
>
<
param-name
>contextConfigLocation</
param-name
>
<
param-value
>classpath:app-servlet.xml</
param-value
>
</
init-param
>
<
load-on-startup
>2</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>app</
servlet-name
>
<
url-pattern
>/</
url-pattern
>
</
servlet-mapping
>
<
session-config
>
<
session-timeout
>60</
session-timeout
>
</
session-config
>
<
welcome-file-list
>
<
welcome-file
>index.jsp</
welcome-file
>
<
welcome-file
>index.html</
welcome-file
>
</
welcome-file-list
>
<
error-page
>
<
error-code
>500</
error-code
>
<
location
>/system/500.jsp</
location
>
</
error-page
>
<
error-page
>
<
error-code
>404</
error-code
>
<
location
>/system/404.jsp</
location
>
</
error-page
>
<
error-page
>
<
error-code
>403</
error-code
>
<
location
>/system/403.jsp</
location
>
</
error-page
>
</
web-app
>
1.UserController代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
package
com.xs.demo.controller;
import
java.net.URLEncoder;
import
java.util.HashMap;
import
java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.springframework.stereotype.Controller;
import
org.springframework.web.bind.ServletRequestUtils;
import
org.springframework.web.bind.annotation.RequestMapping;
import
com.google.gson.Gson;
import
com.google.gson.GsonBuilder;
import
com.xs.demo.entity.Userinfo;
import
com.xs.demo.service.UserService;
import
com.xs.demo.util.StringUtil;
/**
* SpringMVC+Hibernate +MySql+ EasyUI ---CRUD
* @author 宗潇帅
* 类名称:UserController
* @date 2014-11-15 下午4:05:32
* 备注:
*/
@Controller
@RequestMapping
(value=
"/user"
)
public
class
UserController {
UserService userService;
private
static
Log log = LogFactory.getLog(UserController.
class
);
/**
* index --list
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value=
"/index"
)
public
String index(HttpServletRequest request,
HttpServletResponse response)
throws
Exception{
return
"/views/user/index"
;
}
/**
* list method
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value =
"/list"
)
public
String list(HttpServletRequest request,
HttpServletResponse response)
throws
Exception{
int
start = ServletRequestUtils.getIntParameter(request,
"page"
,
1
)-
1
;
int
size = ServletRequestUtils.getIntParameter(request,
"rows"
,
0
);
String name = ServletRequestUtils.getStringParameter(request,
"name"
,
""
);
String order = StringUtil.getOrderString(request);
//取得排序参数
String result =
null
;
try
{
result = userService.list(name,start, size, order);
}
catch
(Exception e) {
if
(log.isErrorEnabled()){
log.error(
"查询列表失败"
, e);
}
result =
""
;
}
String sortName = ServletRequestUtils.getStringParameter(request,
"sort"
,
""
);
String sortOrder = ServletRequestUtils.getStringParameter(request,
"order"
,
""
);
Map<String, Object> searchMap =
new
HashMap<String,Object>();
searchMap.put(
"pageNumber"
, start+
1
);
searchMap.put(
"rows"
, size);
searchMap.put(
"sortName"
, sortName);
searchMap.put(
"sortOrder"
, sortOrder);
Gson gson =
new
GsonBuilder().setDateFormat(
"yyyy-MM-dd"
).create();
String s = gson.toJson(searchMap);
s = URLEncoder.encode(s,
"UTF-8"
);
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
/**
* gotoAdd --page
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value=
"/gotoAdd"
)
public
String gotoAdd(HttpServletRequest request,
HttpServletResponse response)
throws
Exception{
return
"views/user/add"
;
}
/**
* add --method
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value=
"/add"
)
public
String add(HttpServletRequest request,
HttpServletResponse response)
throws
Exception {
String result =
null
;
Userinfo userinfo = (Userinfo)StringUtil.requestToObject(request, Userinfo.
class
);
Userinfo dbUserinfo = userService.getUserByName(userinfo.getName());
if
(dbUserinfo!=
null
){
result =
"{\"success\":false,\"msg\":\"名称已存在!\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
try
{
if
(userinfo.getName().trim().length()<
0
){
result =
"{\"success\":false,\"msg\":\"名称不能为空!\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
else
if
(
null
== userinfo.getAge()){
result =
"{\"success\":false,\"msg\":\"年龄参数有误!\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
else
{
result = userService.save(userinfo);
}
}
catch
(Exception e){
if
(log.isErrorEnabled()){
log.error(
"新增失败"
, e);
}
result =
"{\"success\":false,\"msg\":\"系统错误,请稍候再试!\"}"
;
}
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
/**
* gotoModify --page
* @param request
* @param response
* @return
*/
@RequestMapping
(value=
"/gotoModify"
)
public
String gotoModify(HttpServletRequest request,
HttpServletResponse response)
throws
Exception {
Integer id = ServletRequestUtils.getIntParameter(request,
"id"
);
Userinfo userinfo = userService.get(Userinfo.
class
,id);
request.setAttribute(
"userinfo"
, userinfo);
return
"views/user/modify"
;
}
/**
* modify --method
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value=
"/modify"
)
public
String modify(HttpServletRequest request,
HttpServletResponse response)
throws
Exception {
Integer id = ServletRequestUtils.getIntParameter(request,
"id"
);
Userinfo dbUserinfo = userService.get(Userinfo.
class
, id);
Userinfo userinfo = (Userinfo) StringUtil.requestToObject(request, Userinfo.
class
);
String result;
if
(!dbUserinfo.getName().equals(userinfo.getName())){
Userinfo hasUserinfo = userService.getUserByName(userinfo.getName());
if
(hasUserinfo!=
null
){
result =
"{\"success\":false,\"msg\":\"角色名称已存在!\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
}
try
{
result = userService.update(request,userinfo, id);
}
catch
(Exception e ){
if
(log.isErrorEnabled()){
log.error(
"修改失败"
, e);
}
result =
"{\"success\":false,\"msg\":\"系统错误,请稍候再试!\"}"
;
}
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
/**
* delete --method
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping
(value =
"/delete"
)
public
String delete(HttpServletRequest request,
HttpServletResponse response)
throws
Exception{
Integer id = ServletRequestUtils.getIntParameter(request,
"id"
);
try
{
if
(
null
!= id){
userService.delete(id);
}
String result =
"{\"success\":true,\"msg\":\"删除成功\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
catch
(Exception e) {
if
(log.isErrorEnabled()){
log.error(
"删除失败"
, e);
}
String result =
"{\"success\":false,\"msg\":\"删除失败,请稍候再试!\"}"
;
StringUtil.writeToWeb(result,
"html"
, response);
return
null
;
}
}
public
UserService getUserService() {
return
userService;
}
public
void
setUserService(UserService userService) {
this
.userService = userService;
}
}
2.UserService代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package
com.xs.demo.service;
import
java.io.Serializable;
import
java.util.Date;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
com.google.gson.Gson;
import
com.google.gson.GsonBuilder;
import
com.xs.demo.dao.UserDao;
import
com.xs.demo.entity.Userinfo;
import
com.xs.demo.util.StringUtil;
/**
* SpringMVC+Hibernate +MySql+ EasyUI ---CRUD
* @author 宗潇帅
* 类名称:UserService
* @date 2014-11-15 下午4:14:37
* 备注:
*/
public
class
UserService
extends
BaseService {
UserDao userDao;
/**
* list
* @param name
* @param start
* @param size
* @param order
* @return
*/
public
String list(String name,
int
start,
int
size, String order){
List<Map<String,Object>> list =userDao.list(name,start, size, order);
int
count = count(name,start, size, order);
Map<String,Object> map =
new
HashMap<String, Object>();
map.put(
"total"
, count);
map.put(
"rows"
, list);
Gson gson =
new
GsonBuilder().setDateFormat(
"yyyy-MM-dd HH:mm:ss"
).create();
String s = gson.toJson(map);
return
s;
}
/**
* save
* @param userinfo
* @return
*/
public
String save(Userinfo userinfo) {
String result =
null
;
Date date =
new
Date();
userinfo.setBirthday(date);
userinfo.setPassword(
"888888"
);
super
.save(userinfo);
result =
"{\"success\":true,\"msg\":\"新增角色成功\"}"
;
return
result ;
}
/**
* count
* @param name
* @param start
* @param size
* @param order
* @return
*/
public
int
count(String name,
int
start,
int
size, String order){
return
userDao.count(name,start, size, order);
}
/**
* getuserbyname
* @param name
* @return
*/
public
Userinfo getUserByName(String name) {
return
userDao.getUserByName(name);
}
/**
* update
* @param request
* @param userinfo
* @param id
* @return
*/
public
String update(HttpServletRequest request, Userinfo userinfo,
Integer id) {
Userinfo userinfoOld =
super
.get(Userinfo.
class
, id);
if
(
null
!= userinfo){
StringUtil.requestToObject(request, userinfoOld);
}
super
.update(userinfoOld);
String result =
"{\"success\":true,\"msg\":\"更新成功!\"}"
;
return
result;
}
/**
* delete
* @param id
*/
public
void
delete(Serializable id){
userDao.delete(Userinfo.
class
,id);
}
/*------------------*/
public
UserDao getUserDao() {
return
userDao;
}
public
void
setUserDao(UserDao userDao) {
this
.userDao = userDao;
}
}
3.UserDao
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package
com.xs.demo.dao;
import
java.util.ArrayList;
import
java.util.List;
import
java.util.Map;
import
com.xs.demo.entity.Userinfo;
/**
* SpringMVC+Hibernate +MySql+ EasyUI ---CRUD
* @author 宗潇帅
* 类名称:UserDao
* @date 2014-11-15 下午4:34:51
* 备注:
*/
public
class
UserDao
extends
BaseDao{
public
List<Map<String, Object>> list(String name,
int
start,
int
size,
String order) {
List<Object> param =
new
ArrayList<Object>();
String sql =
"select u.* from userinfo u where 1=1 "
;
if
(
null
!= name && name.trim().length() >
0
){
sql +=
" and u.name like ? "
;
param.add(
"%"
+name+
"%"
);
}
if
(
null
== order || order.length() ==
0
){
order =
" birthday asc"
;
}
return
super
.listByNative(sql, param.toArray(), start, size, order);
}
public
int
count(String name,
int
start,
int
size,
String order) {
List<Object> param =
new
ArrayList<Object>();
String sql =
"select count(*) from userinfo u where 1=1 "
;
if
(
null
!= name && name.trim().length() >
0
){
sql +=
" and u.name like ? "
;
param.add(
"%"
+name+
"%"
);
}
return
super
.countByNative(sql, param.toArray());
}
@SuppressWarnings
(
"unchecked"
)
public
Userinfo getUserByName(String name) {
String hql=
"select u from Userinfo u where u.name=? "
;
List<Userinfo> list=
super
.list(hql,
new
Object[]{name});
if
(list!=
null
&&list.size()>
0
){
return
list.get(
0
);
}
else
{
return
null
;
}
}
}
4.add.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<!
DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html;charset=UTF-8" %>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
>
<%@ include file="/common/meta.jsp"%>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
title
>SpringMVC+Hibernate +MySql+ EasyUI ---CRUD</
title
>
<
script
type
=
"text/javascript"
>
function doCancel(){
document.location.href="${ctx }/user/index";
}
$(function(){
$('#form1').form({
onSubmit: function(){
var v = $(this).form('validate');
if(v){
$("#doSubmit").unbind('click');
}
return v;
},
success:function(data){
data = eval('(' + data + ')');
if(data.success == true){
document.location.href="${ctx }/user/index";
}else {
$("#doSubmit").bind("click",function(){
$('#form1').submit();
});
alert(data.msg);
}
}
});
$("#doSubmit").click(function() {
$('#form1').submit();
return false;
});
});
</
script
>
</
head
>
<
body
>
<
div
class
=
"tables_title"
>Add New UserInfo</
div
>
<
form
action
=
"${ctx }/user/add "
id
=
"form1"
method
=
"post"
>
<
div
class
=
"dengji_table"
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
>名称</
p
>
<
p
>
<
input
name
=
"name"
id
=
"name"
type
=
"text"
class
=
"easyui-validatebox"
data-options
=
"required:true"
placeholder
=
"输入中文"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
style
=
" border-right:none;"
>年龄</
p
>
<
p
>
<
input
name
=
"age"
id
=
"age"
type
=
"number"
min
=
"18"
max
=
"99"
class
=
"easyui-validatebox"
data-options
=
"required:true"
placeholder
=
"年龄不得小于18"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
style
=
" border-right:none;"
>地址</
p
>
<
p
>
<
input
name
=
"address"
id
=
"address"
type
=
"text"
class
=
"easyui-validatebox"
data-options
=
"required:true"
placeholder
=
"市区名"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"clospan_func"
>
<
div
class
=
"btns"
>
<
a
href
=
"javascript:void(0);"
id
=
"doSubmit"
class
=
"blank_btn"
>保存</
a
>
<
a
href
=
"javascript:void(0);"
onclick
=
"doCancel();"
class
=
"blank_btn"
>返回</
a
>
</
div
>
</
div
>
</
div
>
</
form
>
</
body
>
</
html
>
5.index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<%@ page contentType="text/html;charset=UTF-8" %>
<!
DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
>
<%@ include file="/common/meta.jsp"%>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
title
>SpringMVC+Hibernate +MySql+ EasyUI ---CRUD</
title
>
<
script
type
=
"text/javascript"
>
var searchString;
function resizeDg(){
$('#dg').datagrid("resize", { width: $(window).width() * 0.4});
}
function getCookie(c_name){
if (document.cookie.length>0){
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1){
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) {
c_end=document.cookie.length;
}
return document.cookie.substring(c_start,c_end);
}
}
return "";
}
var pageSize = 20;
var pageNumber = 1;
var sortName = '';
var sortOrder = '';
function initDate(){
var s = getCookie("role");
s = decodeURIComponent(s);
if(s != null && s != ""){
searchMap = eval('(' + s + ')');
pageSize = searchMap.rows;
if(pageSize == null || pageSize == ""){
pageSize = 20;
}
pageNumber = searchMap.pageNumber;
sortName = searchMap.sortName;
sortOrder = searchMap.sortOrder;
$("#name").val(searchMap.name );
}
}
$(function(){
$("#doSearch").click(function(){
doSearch();
});
initDate();
var name=$("#name").val();
$('#dg').datagrid({
url:"${ctx }/user/list",
pagination:true,
singleSelect:true,
pageSize:pageSize,
pageNumber:pageNumber,
sortOrder:sortOrder,
sortName:sortName,
queryParams:{
name:name,
},
width:800,
columns:[[
{field:'name',title:'名称', width:100, align:"center",sortable:true},
{field:'age',title:'年龄', width:50, align:"center",sortable:true},
{field:'address',title:'地址', width:50, align:"center",sortable:true},
{field:'operation',title:'操作', width:340, align:"center", sortable:false,
formatter:function(value,row,index){
var s ="";
s+="<
a
href=\"javascript:void(0)\"><
span
onclick=\"javaScript:gotoModify('"+row.id+"');\">修改</
span
></
a
>";
s += "|";
s+="<
a
href=\"javascript:void(0)\"><
span
onclick=\"javaScript:gotoDel('"+row.id+"');\">删除</
span
> </
a
>";
return s;
}
}
]]
});
var p = $('#dg').datagrid('getPager');
$(p).pagination({
pageList: [10,20,50,100]
});
$("#doSearch").click(function(){
doSearch();
});
});
function gotoAdd(){
var url = '${ctx }/user/gotoAdd';
window.location.href=url;
}
function gotoModify(id){
var url = '${ctx}/user/gotoModify?id='+id;
window.location.href=url;
}
function gotoDel(id){
if(!confirm('确定删除所选记录?')){
return;
}
var url = '${ctx}/user/delete?id='+id;
$.ajax({
type : 'post',
url : url,
dataType: "json",
success:function(data){
if(data.success == true){
doSearch();
}else{
alert(data.msg);
}
}
});
}
function doSearch(){
var name=$("#name").val();
/* var schoolId=$("#schoolId").val(); */
$("#dg").datagrid('load',{
name:name
}); //重新载入
}
</
script
>
</
head
>
<
body
onload
=
"resizeDg();"
onresize
=
"resizeDg();"
>
<
div
class
=
"neirong"
>
<
div
class
=
"add-content"
style
=
"margin-top:0"
>
<
div
class
=
"xinxi2"
>
<
div
class
=
"search_box"
>
<
p
>名称: <
input
name
=
"name"
id
=
"name"
type
=
"text"
/></
p
>
<
a
href
=
"javascript:void(0);"
id
=
"doSearch"
class
=
"blank_btn"
>查询</
a
></
div
>
<
div
class
=
"btn_div"
>
<
a
href
=
"javascript:void(0);"
onclick
=
"gotoAdd();"
id
=
"xtsz_rygl_jsgl_add"
class
=
"blank_btn"
>新增</
a
>
</
div
>
</
div
>
<
div
class
=
"contant_list"
>
<!-- c_top start-->
<
table
width
=
"100%"
>
<
tr
>
<
td
>
<
table
id
=
"dg"
></
table
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
div
>
</
div
>
</
body
>
</
html
>
6.modfiy.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!
DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html;charset=UTF-8" %>
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
>
<%@ include file="/common/meta.jsp"%>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
title
>修改用户信息</
title
>
<
script
type
=
"text/javascript"
>
function doCancel(){
document.location.href="${ctx }/user/index";
}
$(function(){
$('#form1').form({
onSubmit: function(){
var v = $(this).form('validate');
if(v){
$("#doSubmit").unbind('click');
}
return v;
},
success:function(data){
data = eval('(' + data + ')');
if(data.success == true){
document.location.href="${ctx }/user/index";
}else {
$("#doSubmit").bind("click",function(){
$('#form1').submit();
});
alert(data.msg);
}
}
});
$("#doSubmit").click(function() {
$('#form1').submit();
return false;
});
});
</
script
>
</
head
>
<
body
>
<
div
class
=
"tables_title"
>修改用户</
div
>
<
form
action
=
"${ctx }/user/modify"
id
=
"form1"
method
=
"post"
>
<
input
type
=
"hidden"
name
=
"id"
value
=
"${userinfo.id }"
></
input
>
<
div
class
=
"dengji_table"
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
>名称</
p
>
<
p
>
<
input
name
=
"name"
id
=
"name"
type
=
"text"
class
=
"easyui-validatebox"
data-options
=
"required:true"
value
=
"${userinfo.name}"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
style
=
" border-right:none;"
>年龄</
p
>
<
p
>
<
input
name
=
"age"
id
=
"age"
type
=
"number"
min
=
"18"
max
=
"99"
class
=
"easyui-validatebox"
data-options
=
"required:true"
value
=
"${userinfo.age}"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"basic_table"
>
<
div
class
=
"clospan"
>
<
p
class
=
"basic_name"
style
=
" border-right:none;"
>地址</
p
>
<
p
>
<
input
name
=
"address"
id
=
"address"
type
=
"text"
class
=
"easyui-validatebox"
data-options
=
"required:true"
value
=
"${userinfo.address}"
/>
</
p
>
</
div
>
</
div
>
<
div
class
=
"clospan_func"
>
<
div
class
=
"btns"
>
<
a
href
=
"javascript:void(0);"
id
=
"doSubmit"
class
=
"blank_btn"
>保存</
a
>
<
a
href
=
"javascript:void(0);"
onclick
=
"doCancel();"
class
=
"blank_btn"
>返回</
a
>
</
div
>
</
div
>
</
div
>
</
form
>
</
body
>
</
html
>
7.app-aop.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?
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:aop
=
"http://www.springframework.org/schema/aop"
xmlns:jee
=
"http://www.springframework.org/schema/jee"
xmlns:tx
=
"http://www.springframework.org/schema/tx"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire
=
"byName"
>
<
aop:config
>
<
aop:pointcut
id
=
"testPointcut"
expression
=
"execution(* cn.com.elve.live..service..*.*(..))"
/>
</
aop:config
>
<!-- 普通的AOP,如果想得到被代理的方法参数,那么就必须在配置里提前写好,这样有非常大的局限性 -->
<
aop:config
>
<
aop:aspect
ref
=
"testSchemaAop"
>
<
aop:before
method
=
"before"
pointcut-ref
=
"testPointcut"
/>
<
aop:after-returning
method
=
"afterReturning"
pointcut-ref
=
"testPointcut"
returning
=
"object"
/>
<
aop:after-throwing
method
=
"afterThrowing"
pointcut-ref
=
"testPointcut"
throwing
=
"object"
/>
<
aop:after
method
=
"after"
pointcut-ref
=
"testPointcut"
/>
</
aop:aspect
>
</
aop:config
>
<!-- 基于advisor的代理,代理类需要实现spring提供的接口,然后就可以用到强大的功能了。 -->
<
aop:config
>
<
aop:advisor
pointcut-ref
=
"testPointcut"
advice-ref
=
"afterReturn"
/>
</
aop:config
>
<!-- 需要由spring注入的bean定义 -->
<
bean
id
=
"afterReturn"
class
=
"com.xs.demo.aop.AfterReturn"
/>
<
bean
id
=
"afterThrow"
class
=
"com.xs.demo.aop.AfterThrow"
/>
<
bean
id
=
"before"
class
=
"com.xs.demo.aop.Before"
/>
<
bean
id
=
"testSchemaAop"
class
=
"com.xs.demo.aop.TestSchemaAop"
/>
</
beans
>
8.app-context.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?
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:aop
=
"http://www.springframework.org/schema/aop"
xmlns:jee
=
"http://www.springframework.org/schema/jee"
xmlns:tx
=
"http://www.springframework.org/schema/tx"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire
=
"byName"
>
<!-- 使用annotation 自动注册bean -->
<
context:annotation-config
/>
<
context:component-scan
base-package
=
"com.xs.demo"
>
<
context:include-filter
type
=
"regex"
expression
=
".*Service"
/>
<
context:include-filter
type
=
"regex"
expression
=
".*Dao"
/>
<
context:include-filter
type
=
"regex"
expression
=
".*Job"
/>
</
context:component-scan
>
<
import
resource
=
"classpath:/app-db.xml"
/>
<!-- 配置文件读取 -->
<
bean
class
=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<
property
name
=
"locations"
>
<
list
>
<
value
>classpath:/jdbc.properties</
value
>
<
value
>classpath:/hibernate.properties</
value
>
<
value
>classpath:/log4j.properties</
value
>
</
list
>
</
property
>
</
bean
>
<!-- 开启AOP监听 只对当前配置文件有效 -->
<
aop:aspectj-autoproxy
expose-proxy
=
"true"
/>
<!-- 开启注解事务 只对当前配置文件有效 -->
<
tx:annotation-driven
transaction-manager
=
"txManager"
/>
<
bean
id
=
"txManager"
class
=
"org.springframework.orm.hibernate4.HibernateTransactionManager"
>
<
property
name
=
"sessionFactory"
ref
=
"sessionFactory"
/>
</
bean
>
<
tx:advice
id
=
"txAdvice"
transaction-manager
=
"txManager"
>
<
tx:attributes
>
<
tx:method
name
=
"save*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"add*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"create*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"insert*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"update*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"modify*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"upload*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"merge*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"del*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"remove*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"move*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"change*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"put*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"use*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"log*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"sh*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"bh*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"sf*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"bj*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"tf*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"mobileLogin"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"register*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"goto*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"active*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"send*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"handel*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"attendance*"
propagation
=
"REQUIRED"
/>
<
tx:method
name
=
"batch"
propagation
=
"REQUIRED"
/>
<!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到-->
<
tx:method
name
=
"get*"
propagation
=
"REQUIRED"
read-only
=
"true"
/>
<
tx:method
name
=
"count*"
propagation
=
"REQUIRED"
read-only
=
"true"
/>
<
tx:method
name
=
"find*"
propagation
=
"REQUIRED"
read-only
=
"true"
/>
<
tx:method
name
=
"list*"
propagation
=
"REQUIRED"
read-only
=
"true"
/>
<
tx:method
name
=
"*"
read-only
=
"true"
/>
</
tx:attributes
>
</
tx:advice
>
<
aop:config
expose-proxy
=
"true"
>
<!-- 只对业务逻辑层实施事务 -->
<
aop:pointcut
id
=
"txPointcut"
expression
=
"execution(* com.xs.demo..service..*.*(..))"
/>
<
aop:advisor
advice-ref
=
"txAdvice"
pointcut-ref
=
"txPointcut"
/>
</
aop:config
>
<!-- 自动扫描测试用service -->
<!-- <context:component-scan base-package="test.service"></context:component-scan> -->
<!-- javaMailSender
<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl" >
<property name="host" value="smtp.qq.com"/>
<property name="port" value="465"/>
<property name="username" value="elve@elve.cn"/>
<property name="password" value="654123.huo"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
</props>
</property>
</bean> -->
</
beans
>
9.app-servlet.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!-- 配置urlMapping -->
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop
=
"http://www.springframework.org/schema/aop"
xmlns:jee
=
"http://www.springframework.org/schema/jee"
xmlns:tx
=
"http://www.springframework.org/schema/tx"
xmlns:mvc
=
"http://www.springframework.org/schema/mvc"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-autowire
=
"byName"
>
<!-- 启用基于注解的处理器映射,添加拦截器,类级别的处理器映射 -->
<
bean
class
=
"org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"
>
<
property
name
=
"interceptors"
>
<
list
>
<
bean
class
=
"org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
/>
</
list
>
</
property
>
</
bean
>
<!-- 设置自动扫描的controller类的路径,可以写多个 -->
<!-- 例<context:component-scan base-package="cn.com.elve.live.controller,cn.com.elve.live.xxx"/> -->
<
context:component-scan
base-package
=
"com.xs.demo.controller"
/>
<!--
配置一个基于注解的定制的WebBindingInitializer,解决日期转换问题,方法级别的处理器映射,
有人说该bean要放在context:component-scan前面,要不然不起作用,但我试的放后面也可以啊。
-->
<
bean
class
=
"org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
>
<
property
name
=
"cacheSeconds"
value
=
"0"
/>
</
bean
>
<!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd -->
<
mvc:resources
mapping
=
"/images/**"
location
=
"/images/"
/>
<
mvc:resources
mapping
=
"/js/**"
location
=
"/js/"
/>
<
mvc:resources
mapping
=
"/css/**"
location
=
"/css/"
/>
<
mvc:resources
mapping
=
"/swf/**"
location
=
"/swf/"
/>
<
mvc:resources
mapping
=
"/file/**"
location
=
"/file/"
/>
<
mvc:resources
mapping
=
"/FusionCharts/**"
location
=
"/FusionCharts/"
/>
<!-- viewResolver 视图解析器,将视图名(ModelAndView中的view)解析成URL-->
<
bean
id
=
"viewResolver"
class
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<
property
name
=
"suffix"
value
=
".jsp"
/>
<
property
name
=
"prefix"
value
=
"/WEB-INF/"
/>
<
property
name
=
"order"
value
=
"20"
></
property
>
<
property
name
=
"viewClass"
value
=
"org.springframework.web.servlet.view.InternalResourceView"
/>
</
bean
>
<!-- 针对freemarker的视图配置 -->
<
bean
id
=
"freeMarkerViewResolver"
class
=
"org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"
>
<
property
name
=
"suffix"
value
=
".ftl"
/>
<
property
name
=
"order"
value
=
"5"
></
property
>
<!--resolver排序,本resolver会早于viewResolver-->
<
property
name
=
"viewClass"
value
=
"org.springframework.web.servlet.view.freemarker.FreeMarkerView"
></
property
>
<
property
name
=
"contentType"
value
=
"text/html;charset=UTF-8"
></
property
>
<
property
name
=
"requestContextAttribute"
value
=
"request"
/>
<
property
name
=
"exposeSpringMacroHelpers"
value
=
"true"
/>
<
property
name
=
"exposeRequestAttributes"
value
=
"true"
/>
<
property
name
=
"exposeSessionAttributes"
value
=
"true"
/>
</
bean
>
<
bean
id
=
"freeMarkerConfigurer"
class
=
"org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"
>
<
property
name
=
"templateLoaderPath"
value
=
"/WEB-INF/"
/>
<
property
name
=
"freemarkerSettings"
>
<
props
>
<
prop
key
=
"template_update_delay"
>0</
prop
>
<
prop
key
=
"default_encoding"
>UTF-8</
prop
>
<
prop
key
=
"number_format"
>0.##########</
prop
>
<
prop
key
=
"datetime_format"
>yyyy-MM-dd HH:mm:ss</
prop
>
<
prop
key
=
"classic_compatible"
>true</
prop
>
<
prop
key
=
"template_exception_handler"
>ignore</
prop
>
</
props
>
</
property
>
</
bean
>
<!--multipartResolver 支持分段文件上传 使用时form需要加上enctype="multipart/form-data"属性,且form的method设置为POST-->
<
bean
id
=
"multipartResolver"
class
=
"org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
<
property
name
=
"maxUploadSize"
value
=
"500400000"
/>
<
property
name
=
"maxInMemorySize"
value
=
"4096"
/>
<
property
name
=
"defaultEncoding"
value
=
"UTF-8"
/>
</
bean
>
<!-- 国际化配置 -->
<
bean
id
=
"localeResolver"
class
=
"org.springframework.web.servlet.i18n.CookieLocaleResolver"
>
<
property
name
=
"cookieName"
value
=
"clientlanguage"
/>
<
property
name
=
"cookieMaxAge"
value
=
"94608000"
/>
</
bean
>
</
beans
>
使用的SpringMVC HandlerInterceptor验证是否登陆。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package
com.xs.demo.inteceptor;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.springframework.web.servlet.HandlerInterceptor;
import
org.springframework.web.servlet.ModelAndView;
public
class
Test
implements
HandlerInterceptor{
@Override
public
void
afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws
Exception {
System.out.println(
"最后执行"
);
}
@Override
public
void
postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3)
throws
Exception {
System.out.println(
"第二步执行"
);
}
@Override
public
boolean
preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2)
throws
Exception {
System.out.println(
"主要的业务逻辑"
);
return
false
;
}
}
代码很简单。判断session是否为空。且判断用户请求的url
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public
boolean
preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler)
throws
Exception {
System.out.println(
"第一步"
);
String path = request.getServletPath();
if
(path.startsWith(
"/user/"
)){
Login userinfo = (Login) request.getSession().getAttribute(Constants.LOGIN_INFO);
if
(
null
== userinfo && !path.startsWith(
"/user/gotoAdd/"
)){
response.sendRedirect(request.getContextPath()+
"/system/login.jsp"
);
return
false
;
}
else
{
System.out.println(
"else"
);
return
true
;
}
}
return
true
;
}
0 0
- 基于easyui的 增 删 改 查
- 基于easyui框架的增删改查
- 【Jqurey EasyUI+Asp.net】---DataGrid的增、删、改、查
- easyUI对列表的增、删、改、查例子。
- EASYUI的增删改查
- Easyui-DataGrid 的增删查改
- easyUi的简单增删改查案例
- easyui增删改查
- easyui增删改查
- 二、Mybatis增、删、改、查基于XML和注解
- 基于SpringMVC框架,完成用户的增,删,改,查,以及json数据处理
- 基于Object/数组模拟实现ArrayList的增、删、改、查
- easyui-datagrid 增删改查
- EasyUI 增删改查、分页
- easyUI 增删查改1
- easyUI datagrid增删改查
- EasyUI Datagrid增删改查
- EasyUi+mvc增删改查
- uva10817(注意输入的解决)
- 【BZOJ1062】[NOI2008]糖果雨【二维树状数组】
- 欢迎使用CSDN-markdown编辑器
- php如何实现上一页下一页的功能 (不是列表页 是内容页)
- 《Linux操作系统分析》之分析Linux内核创建一个新进程的过程
- 基于easyui的 增 删 改 查
- C++指针【数组、字符串作为函数的参数】
- 第二次上机作业
- ubuntu新建用户与无密码远程登陆
- 回归基础系列-选择排序[JAVA]
- hdu1166敌兵布阵<树状数组---模板>
- DFS-zb的生日
- 正则大全
- 【BZOJ2243】[SDOI2011]染色【树链剖分】【线段树】