springmvc注解配置例子的实例代码

 弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的 spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。

文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。

web.xml配置:

01 <?xml version=" 1.0 " encoding=" UTF-8 " ?>
03  <display - name> s3h3 </display - name>
04  <context - param>
05  <param - name> contextConfigLocation </param - name>
06  <param - value> classpath:applicationContext * .xml </param - value>
07  </context - param>
08  <listener>
09  <listener - class> org.springframework.web.context.ContextLoaderListener </listener - class>
10  </listener>
11   
12  <servlet>
13  <servlet - name> spring </servlet - name>
14  <servlet - class> org.springframework.web.servlet.DispatcherServlet </servlet - class>
15  <load - on - startup> </load - on - startup>
16  </servlet>
17  <servlet - mapping>
18  <servlet - name> spring </servlet - name>
19 <!-- 这里在配成spring,下边也要写一个名为spring - servlet.xml的文件,主要用来配置它的controller -->
20  <url - pattern>* . do </url - pattern>
21  </servlet - mapping>
22  <welcome - file - list>
23  <welcome - file> index.jsp </welcome - file>
24  </welcome - file - list>
25  </web - app>

 

spring-servlet,主要配置controller的信息

01 <?xml version="1.0"encoding="UTF-8"?>
05  xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd
06  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
07  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
08  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
09   
10  <context:annotation-config />
11  <!-- 把标记了@Controller注解的类转换为bean -->
12  <context:component-scan base-package="com.mvc.controller" />
13  <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
14  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
15   
16  <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
17  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
18  p:prefix="/WEB-INF/view/" p:suffix=".jsp" />
19   
20  <bean id="multipartResolver"
21  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
22  p:defaultEncoding="utf-8" />
23  </beans>

 

applicationContext.xml代码

01 <?xml version="1.0"encoding="UTF-8"?>
06  xsi:schemaLocation="
07  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
08  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
09  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
10  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
11   
12  <context:annotation-config />
13  <context:component-scan base-package="com.mvc" /> <!-- 自动扫描所有注解该路径 -->
14   
15  <context:property-placeholder location="classpath:/hibernate.properties" />
16   
17  <bean id="sessionFactory"
18  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
19  <property name="dataSource" ref="dataSource" />
20  <property name="hibernateProperties">
21  <props>
22  <prop key="hibernate.dialect">${dataSource.dialect} </prop>
23  <prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto} </prop>
24  <prop key="hibernate.hbm2ddl.auto">update </prop>
25  </props>
26  </property>
27  <property name="packagesToScan">
28  <list>
29  <value> com.mvc.entity </value> <!-- 扫描实体类,也就是平时所说的model -->
30  </list>
31  </property>
32  </bean>
33   
34  <bean id="transactionManager"
35  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
36  <property name="sessionFactory" ref="sessionFactory" />
37  <property name="dataSource" ref="dataSource" />
38  </bean>
39   
40  <bean id="dataSource"
41  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
42  <property name="driverClassName" value="${dataSource.driverClassName}" />
43  <property name="url" value="${dataSource.url}" />
44  <property name="username" value="${dataSource.username}" />
45  <property name="password" value="${dataSource.password}" />
46  </bean>
47  <!-- Dao的实现 -->
48  <bean id="entityDao" class="com.mvc.dao.EntityDaoImpl">
49  <property name="sessionFactory" ref="sessionFactory" />
50  </bean>
51  <tx:annotation-driven transaction-manager="transactionManager" />
52  <tx:annotation-driven mode="aspectj" />
53   
54  <aop:aspectj-autoproxy />
55  </beans>

 

hibernate.properties数据库连接配置

1 dataSource.password=123
2 dataSource.username=root
3 dataSource.databaseName=test
4 dataSource.driverClassName=com.mysql.jdbc.Driver
5 dataSource.dialect=org.hibernate.dialect.MySQL5Dialect
6 dataSource.serverName=localhost:3306
7 dataSource.url=jdbc:mysql://localhost:3306/test
8 dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}
9 dataSource.hbm2ddl.auto=update

 

配置已经完成,下面开始例子
先在数据库建表,例子用的是mysql数据库

1 CREATE TABLE `test`.`student` (
2  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
3  `name` varchar(45) NOT NULL,
4  `psw` varchar(45) NOT NULL,
5  PRIMARY KEY (`id`)
6 )

 

建好表后,生成实体类

01 packagecom.mvc.entity;
02   
03 import java.io.Serializable;
04   
05 import javax.persistence.Basic;
06 import javax.persistence.Column;
07 import javax.persistence.Entity;
08 import javax.persistence.GeneratedValue;
09 import javax.persistence.GenerationType;
10 import javax.persistence.Id;
11 import javax.persistence.Table;
12   
13 @Entity
14 @Table(name="student")
15 public class Student implements Serializable {
16  private static final long serialVersionUID=1L;
17  @Id
18  @Basic(optional=false)
19  @GeneratedValue(strategy=GenerationType.IDENTITY)
20  @Column(name="id", nullable=false)
21  private Integer id;
22  @Column(name="name")
23  private String user;
24  @Column(name="psw")
25  private String psw;
26  public Integer getId() {
27  return id;
28  }
29  public void setId(Integer id) {
30  this.id=id;
31  }
32   
33  public String getUser() {
34  return user;
35  }
36  public void setUser(String user) {
37  this.user=user;
38  }
39  public String getPsw() {
40  return psw;
41  }
42  public void setPsw(String psw) {
43  this.psw= psw;
44  }
45 }


Dao层实现

01 package com.mvc.dao;
02   
03  import java.util.List;
04   
05  public interface EntityDao {
06  public List<Object> createQuery(final String queryString);
07  public Object save(final Object model);
08  public void update(final Object model);
09  public void delete(final Object model);
10 }

 

01 package com.mvc.dao;
02   
03  import java.util.List;
04   
05  import org.hibernate.Query;
06  import org.springframework.orm.hibernate3.HibernateCallback;
07  import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
08   
09  public class EntityDaoImpl extends HibernateDaoSupport implements EntityDao {
10  public List<Object> createQuery(final String queryString) {
11  return (List<Object>) getHibernateTemplate().execute(
12  new HibernateCallback<Object>() {
13  public Object doInHibernate(org.hibernate.Session session)
14  throws org.hibernate.HibernateException {
15  Query query=session.createQuery(queryString);
16  List<Object> rows=query.list();
17  return rows;
18  }
19  });
20  }
21  public Object save(final Object model) {
22  return getHibernateTemplate().execute(
23  new HibernateCallback<Object>() {
24  public Object doInHibernate(org.hibernate.Session session)
25  throws org.hibernate.HibernateException {
26  session.save(model);
27  return null;
28  }
29  });
30  }
31  public void update(final Object model) {
32  getHibernateTemplate().execute(new HibernateCallback<Object>() {
33  public Object doInHibernate(org.hibernate.Session session)
34  throws org.hibernate.HibernateException {
35  session.update(model);
36  return null;
37  }
38  });
39  }
40  public void delete(final Object model) {
41  getHibernateTemplate().execute(new HibernateCallback<Object>() {
42  public Object doInHibernate(org.hibernate.Session session)
43  throws org.hibernate.HibernateException {
44  session.delete(model);
45  return null;
46  }
47  });
48  }
49 }


Dao在applicationContext.xml注入

1 <bean id="entityDao" class="com.mvc.dao.EntityDaoImpl">
2  <property name="sessionFactory" ref="sessionFactory" />
3  </bean>

 

Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。
开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在spring-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码

01 <% @ page language="java"contentType="text/html;charset=UTF-8"
02  pageEncoding="UTF-8"%>
03  <% @ include file="/include/head.jsp"%>
04  <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
05  <html>
06  <head>
07  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
08  <title> 添加 </title>
09  <script language="javascript" src="<%=request.getContextPath()%><!--
10 /script/jquery.min.js"> 
11 // --></script>
12 <style><!--
13 table{ border-collapse:collapse; }
14 td{ border:1px solid #f00; }
15 --></style><style mce_bogus="1">table
16           
17                            

 

student_add.jsp

01 <% @ page language="java"contentType="text/html;charset=UTF-8"
02  pageEncoding="UTF-8"%>
03  <% @ include file="/include/head.jsp"%>
04  <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
05  <html>
06  <head>
07  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
08  <title> 学生添加 </title>
09  <mce:script type="text/javascript"><!--
10 function turnback(){
11  window.location.href="<%=request.getContextPath()%>/student.do";
12 }
13 // --> </mce:script>
14  </head>
15  <body>
16  <form method="post" action="<%=request.getContextPath()%>/student.do?method=save">
17  <div><c:out value="${addstate}"></c:out></div>
18  <table>
19  <tr><td> 姓名 </td><td><input id="user" name="user" type="text" /></td></tr>
20  <tr><td> 密码 </td><td><input id="psw" name="psw" type="text" /></td></tr>
21  <tr><td colSpan="2" align="center"><input type="submit" value="提交"/><input type="button"onclick="turnback()" value="返回" /> </td></tr>
22  </table>
23   
24  </form>
25  </body>
26  </html>

 

controller类实现,只需把注解写上,spring就会自动帮你找到相应的bean,相应的注解标记意义,不明白的,可以自己查下@Service,@Controller,@Entity等等的内容。

01 package com.mvc.controller;
02   
03  import java.util.List;
04   
05  import javax.servlet.http.HttpServletRequest;
06  import javax.servlet.http.HttpServletResponse;
07   
08  import org.apache.commons.logging.Log;
09  import org.apache.commons.logging.LogFactory;
10  import org.springframework.beans.factory.annotation.Autowired;
11  import org.springframework.stereotype.Controller;
12  import org.springframework.ui.ModelMap;
13  import org.springframework.web.bind.annotation.RequestMapping;
14  import org.springframework.web.bind.annotation.RequestMethod;
15  import org.springframework.web.bind.annotation.RequestParam;
16  import org.springframework.web.servlet.ModelAndView;
17   
18  import com.mvc.entity.Student;
19  import com.mvc.service.StudentService;
20   
21 @Controller
22 @RequestMapping" /student.do " )
23  public class StudentController {
24  protected final transient Log log=LogFactory
25  .getLog(StudentController.class);
26  @Autowired
27  private StudentService studentService;
28  public StudentController(){
29   
30  }
31   
32  @RequestMapping
33  public String load(ModelMap modelMap){
34  List<Object> list=studentService.getStudentList();
35  modelMap.put("list", list);
36  return "student";
37  }
38   
39  @RequestMapping(params="method=add")
40  public String add(HttpServletRequest request, ModelMap modelMap) throws Exception{
41  return "student_add";
42  }
43   
44  @RequestMapping(params="method=save")
45  public String save(HttpServletRequest request, ModelMap modelMap){
46  String user=request.getParameter("user");
47  String psw=request.getParameter("psw");
48  Student st=new Student();
49  st.setUser(user);
50  st.setPsw(psw);
51  try{
52  studentService.save(st);
53  modelMap.put("addstate""添加成功");
54  }
55  catch(Exception e){
56  log.error(e.getMessage());
57  modelMap.put("addstate""添加失败");
58  }
59   
60  return "student_add";
61  }
62   
63  @RequestMapping(params="method=del")
64  public void del(@RequestParam("id") String id, HttpServletResponse response){
65  try{
66  Student st=new Student();
67  st.setId(Integer.valueOf(id));
68  studentService.delete(st);
69  response.getWriter().print("{\"del\":\"true\"}");
70  }
71  catch(Exception e){
72  log.error(e.getMessage());
73  e.printStackTrace();
74  }
75  }
76 }

 

service类实现

01 package com.mvc.service;
02   
03  import java.util.List;
04   
05  import org.springframework.beans.factory.annotation.Autowired;
06  import org.springframework.stereotype.Service;
07  import org.springframework.transaction.annotation.Transactional;
08   
09  import com.mvc.dao.EntityDao;
10  import com.mvc.entity.Student;
11   
12 @Service
13  public class StudentService {
14  @Autowired
15  private EntityDao entityDao;
16   
17  @Transactional
18  public List<Object> getStudentList(){
19  StringBuffer sff=new StringBuffer();
20  sff.append("select a from ").append(Student.class.getSimpleName()).append(" a ");
21  List<Object> list=entityDao.createQuery(sff.toString());
22  return list;
23  }
24   
25  public void save(Student st){
26  entityDao.save(st);
27  }
28  public void delete(Object obj){
29  entityDao.delete(obj);
30  }
31 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值