|
Posted on 2006-12-02 16:05 码农cz 阅读(278) 评论(0) 编辑 收藏 所属分类: Spring Around
工程结构如此图: ![](C:\Documents and Settings\Administrator\桌面\1163126394.jpg)
在web-inf下如此图:![http://czcoding.blogbus.com/files/1163126497.jpg](http://czcoding.blogbus.com/files/1163126497.jpg)
这里,没有用test-case因为比较简单,所以,我们赤膊上阵:
1
#authorities.sql如下:
2
3
CREATE
TABLE
`authorities` (
4
`AUTH_ID`
INTEGER
(
11
)
NOT
NULL
DEFAULT
'
0
'
,
5
`AUTHORITY`
VARCHAR
(
255
)
NOT
NULL
,
6
`AUTH_TYPE`
VARCHAR
(
32
)
NOT
NULL
,
7
`PROTECTED_RES`
VARCHAR
(
64
)
NOT
NULL
,
8
`DISPLAY`
VARCHAR
(
64
)
NOT
NULL
,
9
`NOTE`
VARCHAR
(
64
)
DEFAULT
NULL
,
10
PRIMARY
KEY
(`AUTH_ID`),
11
UNIQUE
KEY
`AUTH_ID` (`AUTH_ID`)
12
);
13
14
COMMIT
;
15
16
INSERT
INTO
`authorities` (`AUTH_ID`, `AUTHORITY`, `AUTH_TYPE`, `PROTECTED_RES`, `DISPLAY`, `NOTE`)
VALUES
17
(
1
,
'
AUTH_FUNC_ContactManager.create
'
,
'
FUNCTION
'
,
'
sample.service.IContactManager.create
'
,
'
创建联系人
'
,
NULL
),
18
(
2
,
'
AUTH_FUNC_ContactManager.delete
'
,
'
FUNCTION
'
,
'
sample.service.IContactManager.delete
'
,
'
删除联系人
'
,
NULL
),
19
(
3
,
'
AUTH_FUNC_ContactManager.getAll
'
,
'
FUNCTION
'
,
'
sample.service.IContactManager.getAll
'
,
'
取联系人列表
'
,
NULL
),
20
(
4
,
'
AUTH_FUNC_ContactManager.getById
'
,
'
FUNCTION
'
,
'
sample.service.IContactManager.getById
'
,
'
根据ID取联系人
'
,
NULL
),
21
(
5
,
'
AUTH_FUNC_ContactManager.update
'
,
'
FUNCTION
'
,
'
sample.service.IContactManager.update
'
,
'
更新联系人信息
'
,
NULL
),
22
(
0
,
'
AUTH_USER
'
,
'
USER
'
,
'
USER
'
,
'
一般用户权限
'
,
NULL
);
23
24
25
##contacts.sql如下:
26
27
CREATE
TABLE
`contacts` (
28
`ID`
INTEGER
(
11
)
NOT
NULL
AUTO_INCREMENT,
29
`CONTACT_NAME`
VARCHAR
(
50
)
NOT
NULL
,
30
`EMAIL`
VARCHAR
(
50
)
DEFAULT
NULL
,
31
PRIMARY
KEY
(`ID`),
32
UNIQUE
KEY
`ID` (`ID`)
33
);
34
35
COMMIT
;
36
37
INSERT
INTO
`contacts` (`ID`, `CONTACT_NAME`, `EMAIL`)
VALUES
38
(
1
,
'
contact1
'
,
'
contact1@sample.com
'
),
39
(
2
,
'
contact2
'
,
'
contact2@sample.com
'
),
40
(
3
,
'
contact3
'
,
'
contact3@sample.com
'
),
41
(
5
,
'
contact22asdasd
'
,
'
contact1@sample.com
'
),
42
(
10
,
'
1`23123123
'
,
'
aaaa
'
);
43
44
45
##user_auth.sql如下:
46
47
CREATE
TABLE
`user_auth` (
48
`
USER_ID
`
INTEGER
(
11
)
NOT
NULL
DEFAULT
'
0
'
,
49
`AUTH_ID`
INTEGER
(
11
)
NOT
NULL
DEFAULT
'
0
'
,
50
PRIMARY
KEY
(`
USER_ID
`, `AUTH_ID`)
51
);
52
53
COMMIT
;
54
55
INSERT
INTO
`user_auth` (`
USER_ID
`, `AUTH_ID`)
VALUES
56
(
1
,
0
),
57
(
1
,
1
),
58
(
1
,
2
),
59
(
1
,
3
),
60
(
1
,
4
),
61
(
1
,
5
),
62
(
2
,
0
),
63
(
2
,
3
),
64
(
2
,
4
);
65
66
67
##userinfo.sql如下:
68
69
CREATE
TABLE
`userinfo` (
70
`
USER_ID
`
INTEGER
(
11
)
NOT
NULL
AUTO_INCREMENT,
71
`USERNAME`
VARCHAR
(
10
)
NOT
NULL
,
72
`PASSWORD`
VARCHAR
(
30
)
DEFAULT
NULL
,
73
`ENABLED`
TINYINT
(
1
)
NOT
NULL
DEFAULT
'
0
'
,
74
PRIMARY
KEY
(`
USER_ID
`),
75
UNIQUE
KEY
`
USER_ID
` (`
USER_ID
`),
76
UNIQUE
KEY
`USERNAME` (`USERNAME`)
77
);
78
79
COMMIT
;
80
81
INSERT
INTO
`userinfo` (`
USER_ID
`, `USERNAME`, `PASSWORD`, `ENABLED`)
VALUES
82
(
1
,
'
root
'
,
'
root
'
,
1
),
83
(
2
,
'
readonly
'
,
'
readonly
'
,
1
);
84
85
86
下面是java代码,太多了都放在一起吧 1 IContactDao接口: 2![](/Images/OutliningIndicators/None.gif) 3 package sample.dao; 4![](/Images/OutliningIndicators/None.gif) 5 import sample.Contact; 6![](/Images/OutliningIndicators/None.gif) 7 import java.util.List; 8![](/Images/OutliningIndicators/None.gif) 9![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public interface IContactDao { 10 public Contact getById(Integer id); 11 public void create(Contact contact); 12 public void delete(Integer contactId); 13 public List findAll(); 14 public void update(Contact contact); 15 } 16![](/Images/OutliningIndicators/None.gif) 17![](/Images/OutliningIndicators/None.gif) 18 ContactDao: 19![](/Images/OutliningIndicators/None.gif) 20![](/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//* 21 * @(#)ContactDao.java 22 */ 23 package sample.dao.impl; 24![](/Images/OutliningIndicators/None.gif) 25 import org.springframework.jdbc.core.support.JdbcDaoSupport; 26 import org.springframework.jdbc.core.SqlParameter; 27 import org.springframework.jdbc.object.SqlUpdate; 28 import org.springframework.jdbc.object.MappingSqlQuery; 29 import sample.dao.IContactDao; 30 import sample.Contact; 31![](/Images/OutliningIndicators/None.gif) 32 import javax.sql.DataSource; 33 import java.sql.Types; 34 import java.sql.ResultSet; 35 import java.sql.SQLException; 36 import java.util.List; 37![](/Images/OutliningIndicators/None.gif) 38![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public class ContactDao extends JdbcDaoSupport implements IContactDao { 39 private ContactDelete contactDelete; 40 private ContactInsert contactInsert; 41 private ContactUpdate contactUpdate; 42 private ContactsAllQuery contactsAllQuery; 43 private ContactsByIdQuery contactsByIdQuery; 44![](/Images/OutliningIndicators/InBlock.gif) 45 //~ Methods ================================================================ 46![](/Images/OutliningIndicators/InBlock.gif) 47![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public Contact getById(Integer id) { 48 List list=contactsByIdQuery.execute(id.intValue()); 49![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(list.size()==0) { 50 return null; 51![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) } else { 52 return (Contact)list.get(0); 53 } 54 } 55![](/Images/OutliningIndicators/InBlock.gif) 56![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void create(Contact contact) { 57 contactInsert.insert(contact); 58 } 59![](/Images/OutliningIndicators/InBlock.gif) 60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void delete(Integer contactId) { 61 contactDelete.delete(contactId); 62 } 63![](/Images/OutliningIndicators/InBlock.gif) 64![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public List findAll() { 65 return contactsAllQuery.execute(); 66 } 67![](/Images/OutliningIndicators/InBlock.gif) 68![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void update(Contact contact) { 69 contactUpdate.update(contact); 70 } 71![](/Images/OutliningIndicators/InBlock.gif) 72![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected void initDao() throws Exception { 73 contactInsert=new ContactInsert(getDataSource()); 74 contactUpdate=new ContactUpdate(getDataSource()); 75 contactDelete=new ContactDelete(getDataSource()); 76 contactsAllQuery=new ContactsAllQuery(getDataSource()); 77 contactsByIdQuery=new ContactsByIdQuery(getDataSource()); 78 } 79![](/Images/OutliningIndicators/InBlock.gif) 80![](/Images/OutliningIndicators/InBlock.gif) 81![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected class ContactDelete extends SqlUpdate { 82![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected ContactDelete(DataSource ds) { 83 super(ds, "DELETE FROM contacts WHERE id = ?"); 84 declareParameter(new SqlParameter(Types.INTEGER)); 85 compile(); 86 } 87![](/Images/OutliningIndicators/InBlock.gif) 88![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected void delete(Integer contactId) { 89 super.update(contactId.intValue()); 90 } 91 } 92![](/Images/OutliningIndicators/InBlock.gif) 93![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected class ContactInsert extends SqlUpdate { 94![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected ContactInsert(DataSource ds) { 95 super(ds, "INSERT INTO contacts ( CONTACT_NAME, EMAIL) VALUES (?,?)"); 96 declareParameter(new SqlParameter(Types.VARCHAR)); 97 declareParameter(new SqlParameter(Types.VARCHAR)); 98 compile(); 99 } 100![](/Images/OutliningIndicators/InBlock.gif) 101![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected void insert(Contact contact) { 102![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) Object[] objs=new Object[] {contact.getName(),contact .getEmail()}; 103 super.update(objs); 104 } 105 } 106![](/Images/OutliningIndicators/InBlock.gif) 107![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected class ContactUpdate extends SqlUpdate { 108![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected ContactUpdate(DataSource ds) { 109 super(ds, 110 "UPDATE contacts SET contact_name = ?, email = ? WHERE id = ?" 111 ); 112 declareParameter(new SqlParameter(Types.VARCHAR)); 113 declareParameter(new SqlParameter(Types.VARCHAR)); 114 declareParameter(new SqlParameter(Types.INTEGER)); 115 compile(); 116 } 117![](/Images/OutliningIndicators/InBlock.gif) 118![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected void update(Contact contact) { 119![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) Object[] objs=new Object[] {contact.getName(),contact.getEmail(),contact 120 .getId()}; 121 super.update(objs); 122 } 123 } 124![](/Images/OutliningIndicators/InBlock.gif) 125![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected class ContactsAllQuery extends MappingSqlQuery { 126![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected ContactsAllQuery(DataSource ds) { 127 super(ds, "SELECT id, contact_name, email FROM contacts ORDER BY id"); 128 compile(); 129 } 130![](/Images/OutliningIndicators/InBlock.gif) 131 protected Object mapRow(ResultSet rs, int rownum) 132![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) throws SQLException { 133 Contact contact=new Contact(); 134 contact.setId(new Integer(rs.getInt("id"))); 135 contact.setName(rs.getString("contact_name")); 136 contact.setEmail(rs.getString("email")); 137![](/Images/OutliningIndicators/InBlock.gif) 138 return contact; 139 } 140 } 141![](/Images/OutliningIndicators/InBlock.gif) 142![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected class ContactsByIdQuery extends MappingSqlQuery { 143![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) protected ContactsByIdQuery(DataSource ds) { 144 super(ds, 145 "SELECT id, contact_name, email FROM contacts WHERE id = ? ORDER BY id" 146 ); 147 declareParameter(new SqlParameter(Types.INTEGER)); 148 compile(); 149 } 150![](/Images/OutliningIndicators/InBlock.gif) 151 protected Object mapRow(ResultSet rs, int rownum) 152![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) throws SQLException { 153 Contact contact=new Contact(); 154 contact.setId(new Integer(rs.getInt("id"))); 155 contact.setName(rs.getString("contact_name")); 156 contact.setEmail(rs.getString("email")); 157![](/Images/OutliningIndicators/InBlock.gif) 158 return contact; 159 } 160 } 161![](/Images/OutliningIndicators/InBlock.gif) 162 } 163![](/Images/OutliningIndicators/None.gif) 164![](/Images/OutliningIndicators/None.gif) 165![](/Images/OutliningIndicators/None.gif) 166 IContactManager: 167![](/Images/OutliningIndicators/None.gif) 168![](/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//* 169 * @(#)IContactManager.java 170 * 171 * Copyright 2003 Copyright.com, Inc. All rights reserved. 172 * Use is subject to license terms. 173 */ 174 package sample.service; 175![](/Images/OutliningIndicators/None.gif) 176 import sample.Contact; 177![](/Images/OutliningIndicators/None.gif) 178 import java.util.List; 179![](/Images/OutliningIndicators/None.gif) 180![](/Images/OutliningIndicators/None.gif) 181![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public interface IContactManager { 182 public List getAll(); 183 public Contact getById(Integer id); 184 public void create(Contact contact); 185 public void update(Contact contact); 186 public void delete(Contact contact); 187 } 188![](/Images/OutliningIndicators/None.gif) 189![](/Images/OutliningIndicators/None.gif) 190 ContactManager: 191![](/Images/OutliningIndicators/None.gif) 192![](/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//* 193 * @(#)ContactManager.java 194 * 195 * Copyright 2003 Copyright.com , Inc. All rights reserved. 196 * Use is subject to license terms. 197 */ 198 package sample.service.impl; 199![](/Images/OutliningIndicators/None.gif) 200 import sample.service.IContactManager; 201 import sample.Contact; 202 import sample.dao.impl.ContactDao; 203![](/Images/OutliningIndicators/None.gif) 204 import java.util.List; 205![](/Images/OutliningIndicators/None.gif) 206![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public class ContactManager implements IContactManager { 207 private ContactDao contactDao; 208![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setContactDao(ContactDao contactDao) { 209 this.contactDao = contactDao; 210 } 211![](/Images/OutliningIndicators/InBlock.gif) 212![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public ContactDao getContactDao() { 213 return contactDao; 214 } 215![](/Images/OutliningIndicators/InBlock.gif) 216![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void create(Contact contact) { 217 contactDao.create(contact); 218 } 219![](/Images/OutliningIndicators/InBlock.gif) 220![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void delete(Contact contact) { 221 contactDao.delete(contact.getId()); 222 } 223![](/Images/OutliningIndicators/InBlock.gif) 224![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public List getAll() { 225 return contactDao.findAll(); 226 } 227![](/Images/OutliningIndicators/InBlock.gif) 228![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public Contact getById(Integer id) { 229 return contactDao.getById(id); 230 } 231![](/Images/OutliningIndicators/InBlock.gif) 232![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void update(Contact contact) { 233 contactDao.update(contact); 234 } 235 } 236![](/Images/OutliningIndicators/None.gif) 237![](/Images/OutliningIndicators/None.gif) 238 DataSourceMethodDefinitionSourceEditor 239![](/Images/OutliningIndicators/None.gif) 240![](/Images/OutliningIndicators/ExpandedBlockStart.gif) /**//* 241 * @(#)DataSourceMethodDefinitionSourceEditor.java 242 * 243 * Copyright 2003 Copyright.com , Inc. All rights reserved. 244 * Use is subject to license terms. 245 */ 246 package sample.util; 247![](/Images/OutliningIndicators/None.gif) 248 import net.sf.acegisecurity.intercept.method.MethodDefinitionMap; 249 import net.sf.acegisecurity.ConfigAttributeEditor; 250 import net.sf.acegisecurity.ConfigAttributeDefinition; 251![](/Images/OutliningIndicators/None.gif) 252 import java.util.List; 253 import java.util.Iterator; 254 import java.util.Map; 255 import java.beans.PropertyEditorSupport; 256![](/Images/OutliningIndicators/None.gif) 257 import org.springframework.jdbc.core.support.JdbcDaoSupport; 258 import org.springframework.jdbc.core.JdbcTemplate; 259![](/Images/OutliningIndicators/None.gif) 260![](/Images/OutliningIndicators/None.gif) 261![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public class DataSourceMethodDefinitionSourceEditor extends PropertyEditorSupport { 262 protected JdbcTemplate jdbcTemplate; 263 //~ Methods ================================================================ 264![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public JdbcTemplate getJdbcTemplate() { 265 return jdbcTemplate; 266 } 267![](/Images/OutliningIndicators/InBlock.gif) 268![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 269 this.jdbcTemplate=jdbcTemplate; 270 } 271![](/Images/OutliningIndicators/InBlock.gif) 272![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setAsText(String s) throws IllegalArgumentException { 273 MethodDefinitionMap source=new MethodDefinitionMap(); 274 List rs; 275![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) try { 276 rs=jdbcTemplate.queryForList(s); 277![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) } catch(Exception e) { 278 setValue(source); 279 e.printStackTrace(); 280 return; 281 } 282![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if((rs==null)||rs.size()==0) { 283 // Leave value in property editor null 284![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) } else { 285 // Now we have properties, process each one individually 286 ConfigAttributeEditor configAttribEd=new ConfigAttributeEditor(); 287![](/Images/OutliningIndicators/InBlock.gif) 288![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(Iterator iter=rs.iterator();iter.hasNext();) { 289 Map row=(Map)iter.next(); 290 String authority=(String)row.get("AUTHORITY"); 291 String resource=(String)row.get("PROTECTED_RES"); 292![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if((null==authority)||(resource==null)) { 293 continue; 294 } 295 // Convert value to series of security configuration attributes 296 configAttribEd.setAsText(authority); 297 ConfigAttributeDefinition attr=(ConfigAttributeDefinition)configAttribEd .getValue(); 298 // Register name and attribute 299 source.addSecureMethod(resource, attr); 300 } 301 } 302 setValue(source); 303 } 304![](/Images/OutliningIndicators/InBlock.gif) 305 } 306![](/Images/OutliningIndicators/None.gif) 307![](/Images/OutliningIndicators/None.gif) 308 Contact : 309![](/Images/OutliningIndicators/None.gif) 310 package sample; 311![](/Images/OutliningIndicators/None.gif) 312 import java.io.Serializable; 313![](/Images/OutliningIndicators/ExpandedBlockStart.gif) /** *//** 314 * @author @2006-11-10">cuizhen@risesoft.net">@2006-11-10 上午10:34:01 315 */ 316![](/Images/OutliningIndicators/ExpandedBlockStart.gif) public class Contact implements Serializable { 317 //~ Instance fields ======================================================== 318 private Integer id; 319 private String email; 320 private String name; 321 //~ Constructors =========================================================== 322![](/Images/OutliningIndicators/InBlock.gif) 323![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public Contact(String name, String email) { 324 this.name=name; 325 this.email=email; 326 } 327![](/Images/OutliningIndicators/InBlock.gif) 328![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public Contact() { 329 } 330 //~ Methods ================================================================ 331![](/Images/OutliningIndicators/InBlock.gif) 332![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /** *//** 333 * DOCUMENT ME! 334 * 335 * @param email The email to set. 336 */ 337![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setEmail(String email) { 338 this.email=email; 339 } 340![](/Images/OutliningIndicators/InBlock.gif) 341![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /** *//** 342 * DOCUMENT ME! 343 * 344 * @return Returns the email. 345 */ 346![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public String getEmail() { 347 return email; 348 } 349![](/Images/OutliningIndicators/InBlock.gif) 350![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setId(Integer id) { 351 this.id=id; 352 } 353![](/Images/OutliningIndicators/InBlock.gif) 354![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /** *//** 355 * DOCUMENT ME! 356 * 357 * @return Returns the id. 358 */ 359![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public Integer getId() { 360 return id; 361 } 362![](/Images/OutliningIndicators/InBlock.gif) 363![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /** *//** 364 * DOCUMENT ME! 365 * 366 * @param name The name to set. 367 */ 368![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public void setName(String name) { 369 this.name=name; 370 } 371![](/Images/OutliningIndicators/InBlock.gif) 372![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) /** *//** 373 * DOCUMENT ME! 374 * 375 * @return Returns the name. 376 */ 377![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public String getName() { 378 return name; 379 } 380![](/Images/OutliningIndicators/InBlock.gif) 381![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) public String toString() { 382 StringBuffer sb=new StringBuffer(); 383 sb.append(super.toString()+": "); 384 sb.append("Id: "+this.getId()+"; "); 385 sb.append("Name: "+this.getName()+"; "); 386 sb.append("Email: "+this.getEmail()); 387![](/Images/OutliningIndicators/InBlock.gif) 388 return sb.toString(); 389 } 390 } 391![](/Images/OutliningIndicators/None.gif) 392![](/Images/OutliningIndicators/None.gif) 393 log4j: 394![](/Images/OutliningIndicators/None.gif) 395 # Global logging configuration 396 log4j.rootLogger=WARN, stdout, fileout 397 # Console output![](/Images/dot.gif) 398 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 399 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 400![](/Images/OutliningIndicators/ExpandedBlockStart.gif) log4j.appender.stdout.layout.conversionPattern=[%p,%c {1},%t] %m%n 401![](/Images/OutliningIndicators/None.gif) 402 # Rolling log file output![](/Images/dot.gif) 403 log4j.appender.fileout=org.apache.log4j.RollingFileAppender 404 log4j.appender.fileout.File=contacts.log 405![](/Images/OutliningIndicators/ExpandedBlockStart.gif) #log4j.appender.fileout.File=$ {webapp.root}/WEB-INF/log4j.log 406 log4j.appender.fileout.MaxFileSize=1024KB 407 log4j.appender.fileout.MaxBackupIndex=1 408 log4j.appender.fileout.layout=org.apache.log4j.PatternLayout 409![](/Images/OutliningIndicators/ExpandedBlockStart.gif) log4j.appender.fileout.layout.conversionPattern=%d {ABSOLUTE} %5p %c {1},%t:%L - %m%n 410![](/Images/OutliningIndicators/None.gif) 411![](/Images/OutliningIndicators/None.gif) 412![](/Images/OutliningIndicators/None.gif) 累死了……下面是配置xml 1 WebRoot/WEB-INF/applicationContext-basic.xml 2![](/Images/OutliningIndicators/None.gif) 3![](/Images/OutliningIndicators/None.gif) 4![](/Images/OutliningIndicators/None.gif) 5 6![](/Images/OutliningIndicators/None.gif) 7![](/Images/OutliningIndicators/None.gif) 8 <?xml version="1.0" encoding="UTF-8"?> 9![](/Images/OutliningIndicators/None.gif) 10![](/Images/OutliningIndicators/None.gif) 11 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 12![](/Images/OutliningIndicators/None.gif) 13![](/Images/OutliningIndicators/None.gif) 14![](/Images/OutliningIndicators/None.gif) 15 16![](/Images/OutliningIndicators/None.gif) 17![](/Images/OutliningIndicators/None.gif) 18 <beans> 19![](/Images/OutliningIndicators/None.gif) 20![](/Images/OutliningIndicators/None.gif) 21 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 22![](/Images/OutliningIndicators/None.gif) 23![](/Images/OutliningIndicators/None.gif) 24 <property name="driverClass"> 25![](/Images/OutliningIndicators/None.gif) 26![](/Images/OutliningIndicators/None.gif) 27 <value>com.mysql.jdbc.Driver</value> 28![](/Images/OutliningIndicators/None.gif) 29![](/Images/OutliningIndicators/None.gif) 30 </property> 31![](/Images/OutliningIndicators/None.gif) 32![](/Images/OutliningIndicators/None.gif) 33 <property name="jdbcUrl"> 34![](/Images/OutliningIndicators/None.gif) 35![](/Images/OutliningIndicators/None.gif) 36 <value>jdbc:mysql://localhost:3306/tt</value> 37![](/Images/OutliningIndicators/None.gif) 38![](/Images/OutliningIndicators/None.gif) 39 </property> 40![](/Images/OutliningIndicators/None.gif) 41![](/Images/OutliningIndicators/None.gif) 42 <property name="user"> 43![](/Images/OutliningIndicators/None.gif) 44![](/Images/OutliningIndicators/None.gif) 45 <value>root</value> 46![](/Images/OutliningIndicators/None.gif) 47![](/Images/OutliningIndicators/None.gif) 48 </property> 49![](/Images/OutliningIndicators/None.gif) 50![](/Images/OutliningIndicators/None.gif) 51 <property name="password"> 52![](/Images/OutliningIndicators/None.gif) 53![](/Images/OutliningIndicators/None.gif) 54 <value>123</value> 55![](/Images/OutliningIndicators/None.gif) 56![](/Images/OutliningIndicators/None.gif) 57 </property> 58![](/Images/OutliningIndicators/None.gif) 59![](/Images/OutliningIndicators/None.gif) 60 <property name="initialPoolSize"> 61![](/Images/OutliningIndicators/None.gif) 62![](/Images/OutliningIndicators/None.gif) 63 <value>10</value> 64![](/Images/OutliningIndicators/None.gif) 65![](/Images/OutliningIndicators/None.gif) 66 </property> 67![](/Images/OutliningIndicators/None.gif) 68![](/Images/OutliningIndicators/None.gif) 69 <property name="minPoolSize"> 70![](/Images/OutliningIndicators/None.gif) 71![](/Images/OutliningIndicators/None.gif) 72 <value>10</value> 73![](/Images/OutliningIndicators/None.gif) 74![](/Images/OutliningIndicators/None.gif) 75 </property> 76![](/Images/OutliningIndicators/None.gif) 77![](/Images/OutliningIndicators/None.gif) 78 <property name="maxPoolSize"> 79![](/Images/OutliningIndicators/None.gif) 80![](/Images/OutliningIndicators/None.gif) 81 <value>50</value> 82![](/Images/OutliningIndicators/None.gif) 83![](/Images/OutliningIndicators/None.gif) 84 </property> 85![](/Images/OutliningIndicators/None.gif) 86![](/Images/OutliningIndicators/None.gif) 87 <property name="checkoutTimeout"> 88![](/Images/OutliningIndicators/None.gif) 89![](/Images/OutliningIndicators/None.gif) 90 <value>5000</value> 91![](/Images/OutliningIndicators/None.gif) 92![](/Images/OutliningIndicators/None.gif) 93 </property> 94![](/Images/OutliningIndicators/None.gif) 95![](/Images/OutliningIndicators/None.gif) 96 <property name="maxIdleTime"> 97![](/Images/OutliningIndicators/None.gif) 98![](/Images/OutliningIndicators/None.gif) 99 <value>1800</value> 100![](/Images/OutliningIndicators/None.gif) 101![](/Images/OutliningIndicators/None.gif) 102 </property> 103![](/Images/OutliningIndicators/None.gif) 104![](/Images/OutliningIndicators/None.gif) 105 <property name="idleConnectionTestPeriod"> 106![](/Images/OutliningIndicators/None.gif) 107![](/Images/OutliningIndicators/None.gif) 108 <value>3000</value> 109![](/Images/OutliningIndicators/None.gif) 110![](/Images/OutliningIndicators/None.gif) 111 </property> 112![](/Images/OutliningIndicators/None.gif) 113![](/Images/OutliningIndicators/None.gif) 114 <property name="acquireIncrement"> 115![](/Images/OutliningIndicators/None.gif) 116![](/Images/OutliningIndicators/None.gif) 117 <value>5</value> 118![](/Images/OutliningIndicators/None.gif) 119![](/Images/OutliningIndicators/None.gif) 120 </property> 121![](/Images/OutliningIndicators/None.gif) 122![](/Images/OutliningIndicators/None.gif) 123 </bean> 124![](/Images/OutliningIndicators/None.gif) 125![](/Images/OutliningIndicators/None.gif) 126![](/Images/OutliningIndicators/None.gif) 127 128![](/Images/OutliningIndicators/None.gif) 129![](/Images/OutliningIndicators/None.gif) 130 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 131![](/Images/OutliningIndicators/None.gif) 132![](/Images/OutliningIndicators/None.gif) 133 <property name="dataSource"> 134![](/Images/OutliningIndicators/None.gif) 135![](/Images/OutliningIndicators/None.gif) 136 <ref local="dataSource"/> 137![](/Images/OutliningIndicators/None.gif) 138![](/Images/OutliningIndicators/None.gif) 139 </property> 140![](/Images/OutliningIndicators/None.gif) 141![](/Images/OutliningIndicators/None.gif) 142 </bean> 143![](/Images/OutliningIndicators/None.gif) 144![](/Images/OutliningIndicators/None.gif) 145![](/Images/OutliningIndicators/None.gif) 146 147![](/Images/OutliningIndicators/None.gif) 148![](/Images/OutliningIndicators/None.gif) 149 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 150![](/Images/OutliningIndicators/None.gif) 151![](/Images/OutliningIndicators/None.gif) 152 <property name="dataSource"> 153![](/Images/OutliningIndicators/None.gif) 154![](/Images/OutliningIndicators/None.gif) 155 <ref bean="dataSource"/> 156![](/Images/OutliningIndicators/None.gif) 157![](/Images/OutliningIndicators/None.gif) 158 </property> 159![](/Images/OutliningIndicators/None.gif) 160![](/Images/OutliningIndicators/None.gif) 161 </bean> 162![](/Images/OutliningIndicators/None.gif) 163![](/Images/OutliningIndicators/None.gif) 164![](/Images/OutliningIndicators/None.gif) 165 166![](/Images/OutliningIndicators/None.gif) 167![](/Images/OutliningIndicators/None.gif) 168 <bean id="businessAccessDecisionManager" class="net.sf.acegisecurity.vote.AffirmativeBased"> 169![](/Images/OutliningIndicators/None.gif) 170![](/Images/OutliningIndicators/None.gif) 171 <property name="allowIfAllAbstainDecisions"><value>false</value></property> 172![](/Images/OutliningIndicators/None.gif) 173![](/Images/OutliningIndicators/None.gif) 174 <property name="decisionVoters"> 175![](/Images/OutliningIndicators/None.gif) 176![](/Images/OutliningIndicators/None.gif) 177 <list> 178![](/Images/OutliningIndicators/None.gif) 179![](/Images/OutliningIndicators/None.gif) 180 <ref bean="roleVoter"/> 181![](/Images/OutliningIndicators/None.gif) 182![](/Images/OutliningIndicators/None.gif) 183 </list> 184![](/Images/OutliningIndicators/None.gif)
|