mvc @html 注解,spring mvc注解例子

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

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

web.xml配置:

4f1150b881333f12a311ae9ef34da474.png<?xml  version="1.0"encoding="UTF-8"?>4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngs3h34f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngcontextConfigLocation4f1150b881333f12a311ae9ef34da474.pngclasspath:applicationContext*.xml4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngorg.springframework.web.context.ContextLoaderListener4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngspring4f1150b881333f12a311ae9ef34da474.pngorg.springframework.web.servlet.DispatcherServlet4f1150b881333f12a311ae9ef34da474.png14f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngspring4f1150b881333f12a311ae9ef34da474.png*.do4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngindex.jsp4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

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

4f1150b881333f12a311ae9ef34da474.png<?xml  version="1.0" encoding="UTF-8"?>4f1150b881333f12a311ae9ef34da474.png       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"4f1150b881333f12a311ae9ef34da474.png        xmlns:context="http://www.springframework.org/schema/context"4f1150b881333f12a311ae9ef34da474.png   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">4f1150b881333f12a311ae9ef34da474.png     

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png        

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png          p:prefix="/WEB-INF/view/"p:suffix=".jsp"/>4f1150b881333f12a311ae9ef34da474.png           

4f1150b881333f12a311ae9ef34da474.png          class="org.springframework.web.multipart.commons.CommonsMultipartResolver"4f1150b881333f12a311ae9ef34da474.png          p:defaultEncoding="utf-8"/>4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

applicationContext.xml代码

4f1150b881333f12a311ae9ef34da474.png<?xml  version="1.0" encoding="UTF-8"?>4f1150b881333f12a311ae9ef34da474.png xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"4f1150b881333f12a311ae9ef34da474.png xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx"4f1150b881333f12a311ae9ef34da474.png xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"4f1150b881333f12a311ae9ef34da474.png xsi:schemaLocation="   

4f1150b881333f12a311ae9ef34da474.png         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   

4f1150b881333f12a311ae9ef34da474.png   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png${dataSource.dialect}4f1150b881333f12a311ae9ef34da474.png${dataSource.hbm2ddl.auto}4f1150b881333f12a311ae9ef34da474.pngupdate4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.pngcom.mvc.entity4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png  class="org.springframework.orm.hibernate3.HibernateTransactionManager">4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png  class="org.springframework.jdbc.datasource.DriverManagerDataSource">4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png     

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

hibernate.properties数据库连接配置

4f1150b881333f12a311ae9ef34da474.pngdataSource.password=123  

4f1150b881333f12a311ae9ef34da474.pngdataSource.username=root   

4f1150b881333f12a311ae9ef34da474.pngdataSource.databaseName=test   

4f1150b881333f12a311ae9ef34da474.pngdataSource.driverClassName=com.mysql.jdbc.Driver   

4f1150b881333f12a311ae9ef34da474.pngdataSource.dialect=org.hibernate.dialect.MySQL5Dialect   

4f1150b881333f12a311ae9ef34da474.pngdataSource.serverName=localhost:3306  

4f1150b881333f12a311ae9ef34da474.pngdataSource.url=jdbc:mysql://localhost:3306/test   

4f1150b881333f12a311ae9ef34da474.pngdataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}   

4f1150b881333f12a311ae9ef34da474.pngdataSource.hbm2ddl.auto=update  

4f1150b881333f12a311ae9ef34da474.png

配置已经完成,下面开始例子

先在数据库建表,例子用的是mysql数据库

4f1150b881333f12a311ae9ef34da474.pngCREATE TABLE  `test`.`student` (   

4f1150b881333f12a311ae9ef34da474.png  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   

4f1150b881333f12a311ae9ef34da474.png  `name` varchar(45) NOT NULL,   

4f1150b881333f12a311ae9ef34da474.png  `psw` varchar(45) NOT NULL,   

4f1150b881333f12a311ae9ef34da474.png  PRIMARY KEY (`id`)   

4f1150b881333f12a311ae9ef34da474.png)  

4f1150b881333f12a311ae9ef34da474.png

建好表后,生成实体类

4f1150b881333f12a311ae9ef34da474.pngpackage com.mvc.entity;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimport java.io.Serializable;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.Basic;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.Column;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.Entity;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.GeneratedValue;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.GenerationType;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.Id;   

4f1150b881333f12a311ae9ef34da474.pngimport javax.persistence.Table;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png@Entity  

4f1150b881333f12a311ae9ef34da474.png@Table(name = "student")   

4f1150b881333f12a311ae9ef34da474.pngpublic class Student implements Serializable {   

4f1150b881333f12a311ae9ef34da474.png    private static final long serialVersionUID = 1L;   

4f1150b881333f12a311ae9ef34da474.png    @Id  

4f1150b881333f12a311ae9ef34da474.png    @Basic(optional = false)   

4f1150b881333f12a311ae9ef34da474.png    @GeneratedValue(strategy = GenerationType.IDENTITY)   

4f1150b881333f12a311ae9ef34da474.png    @Column(name = "id", nullable = false)   

4f1150b881333f12a311ae9ef34da474.png    private Integer id;   

4f1150b881333f12a311ae9ef34da474.png    @Column(name = "name")   

4f1150b881333f12a311ae9ef34da474.png    private String user;   

4f1150b881333f12a311ae9ef34da474.png    @Column(name = "psw")   

4f1150b881333f12a311ae9ef34da474.png    private String psw;   

4f1150b881333f12a311ae9ef34da474.png    public Integer getId() {   

4f1150b881333f12a311ae9ef34da474.png        return id;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png    public void setId(Integer id) {   

4f1150b881333f12a311ae9ef34da474.png        this.id = id;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png       

4f1150b881333f12a311ae9ef34da474.png    public String getUser() {   

4f1150b881333f12a311ae9ef34da474.png        return user;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png    public void setUser(String user) {   

4f1150b881333f12a311ae9ef34da474.png        this.user = user;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png    public String getPsw() {   

4f1150b881333f12a311ae9ef34da474.png        return psw;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png    public void setPsw(String psw) {   

4f1150b881333f12a311ae9ef34da474.png        this.psw = psw;   

4f1150b881333f12a311ae9ef34da474.png    }   

4f1150b881333f12a311ae9ef34da474.png}  

4f1150b881333f12a311ae9ef34da474.png

Dao层实现

4f1150b881333f12a311ae9ef34da474.pngpackagecom.mvc.dao;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;   

4f1150b881333f12a311ae9ef34da474.png  

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicinterfaceEntityDao9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngpublicListcreateQuery(finalString queryString);   

d18c02628675d0a2c816449d98bda930.pngpublicObject save(finalObject model);   

d18c02628675d0a2c816449d98bda930.pngpublicvoidupdate(finalObject model);   

d18c02628675d0a2c816449d98bda930.pngpublicvoiddelete(finalObject model);   

8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngpackagecom.mvc.dao;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportorg.hibernate.Query;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.orm.hibernate3.HibernateCallback;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.orm.hibernate3.support.HibernateDaoSupport;   

4f1150b881333f12a311ae9ef34da474.png  

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassEntityDaoImplextendsHibernateDaoSupportimplementsEntityDao9b8a8a44dd1c74ae49c20a7cd451974e.png{   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicListcreateQuery(finalString queryString)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngreturn(List) getHibernateTemplate().execute(   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifnewHibernateCallback()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngpublicObject doInHibernate(org.hibernate.Session session)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifthrowsorg.hibernate.HibernateException9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                        Query query=session.createQuery(queryString);   

d18c02628675d0a2c816449d98bda930.png                        Listrows=query.list();   

d18c02628675d0a2c816449d98bda930.pngreturnrows;   

ecedf933ec37d714bd4c2545da43add2.png                    }ecedf933ec37d714bd4c2545da43add2.png                });   

ecedf933ec37d714bd4c2545da43add2.png    }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicObject save(finalObject model)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngreturngetHibernateTemplate().execute(   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifnewHibernateCallback()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngpublicObject doInHibernate(org.hibernate.Session session)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifthrowsorg.hibernate.HibernateException9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                        session.save(model);   

d18c02628675d0a2c816449d98bda930.pngreturnnull;   

ecedf933ec37d714bd4c2545da43add2.png                    }ecedf933ec37d714bd4c2545da43add2.png                });   

ecedf933ec37d714bd4c2545da43add2.png    }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidupdate(finalObject model)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        getHibernateTemplate().execute(newHibernateCallback()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngpublicObject doInHibernate(org.hibernate.Session session)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifthrowsorg.hibernate.HibernateException9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                session.update(model);   

d18c02628675d0a2c816449d98bda930.pngreturnnull;   

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        });   

ecedf933ec37d714bd4c2545da43add2.png    }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoiddelete(finalObject model)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif        getHibernateTemplate().execute(newHibernateCallback()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngpublicObject doInHibernate(org.hibernate.Session session)   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifthrowsorg.hibernate.HibernateException9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png                session.delete(model);   

d18c02628675d0a2c816449d98bda930.pngreturnnull;   

ecedf933ec37d714bd4c2545da43add2.png            }ecedf933ec37d714bd4c2545da43add2.png        });   

ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

Dao在applicationContext.xml注入

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png

Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。

开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在spring-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif@ page language="java"contentType="text/html; charset=UTF-8"8f1ba5b45633e9678d1db480c16cae3f.png    pageEncoding="UTF-8"%>1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif@ include file="/include/head.jsp"%>4f1150b881333f12a311ae9ef34da474.pnghtml PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png添加 4f1150b881333f12a311ae9ef34da474.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png  

d18c02628675d0a2c816449d98bda930.pngd18c02628675d0a2c816449d98bda930.png

序号姓名密码操作

3c6cafce68eb941a00f1998f1d3d3aa6.gif

{student.id}"/>"> d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png 97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif{student.id}"/>')"value="删除"/>d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.png

d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png d18c02628675d0a2c816449d98bda930.png

student_add.jsp

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif@ page language="java"contentType="text/html; charset=UTF-8"8f1ba5b45633e9678d1db480c16cae3f.png    pageEncoding="UTF-8"%>1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif@ include file="/include/head.jsp"%>4f1150b881333f12a311ae9ef34da474.pnghtml PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png学生添加 4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png/student.do?method=save"> 4f1150b881333f12a311ae9ef34da474.png 4f1150b881333f12a311ae9ef34da474.png
姓名
密码
4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png4f1150b881333f12a311ae9ef34da474.png

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

4f1150b881333f12a311ae9ef34da474.pngpackagecom.mvc.controller;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportjavax.servlet.http.HttpServletRequest;   

4f1150b881333f12a311ae9ef34da474.pngimportjavax.servlet.http.HttpServletResponse;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.logging.Log;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.logging.LogFactory;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.beans.factory.annotation.Autowired;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.stereotype.Controller;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.ui.ModelMap;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.web.bind.annotation.RequestMapping;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.web.bind.annotation.RequestMethod;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.web.bind.annotation.RequestParam;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.web.servlet.ModelAndView;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportcom.mvc.entity.Student;   

4f1150b881333f12a311ae9ef34da474.pngimportcom.mvc.service.StudentService;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png@Controller  

4f1150b881333f12a311ae9ef34da474.png@RequestMapping("/student.do")   

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassStudentController9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngprotectedfinaltransientLog log=LogFactory   

d18c02628675d0a2c816449d98bda930.png    .getLog(StudentController.class);   

d18c02628675d0a2c816449d98bda930.png    @Autowired  

d18c02628675d0a2c816449d98bda930.pngprivateStudentService studentService;   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicStudentController()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png           

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.png    @RequestMapping  

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString load(ModelMap modelMap)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png        Listlist=studentService.getStudentList();   

d18c02628675d0a2c816449d98bda930.png        modelMap.put("list", list);   

d18c02628675d0a2c816449d98bda930.pngreturn"student";   

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.png    @RequestMapping(params="method=add")   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString add(HttpServletRequest request, ModelMap modelMap)throwsException9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.pngreturn"student_add";   

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.png    @RequestMapping(params="method=save")   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicString save(HttpServletRequest request, ModelMap modelMap)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png        String user=request.getParameter("user");   

d18c02628675d0a2c816449d98bda930.png        String psw=request.getParameter("psw");   

d18c02628675d0a2c816449d98bda930.png        Student st=newStudent();   

d18c02628675d0a2c816449d98bda930.png        st.setUser(user);   

d18c02628675d0a2c816449d98bda930.png        st.setPsw(psw);   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png            studentService.save(st);   

d18c02628675d0a2c816449d98bda930.png            modelMap.put("addstate","添加成功");   

ecedf933ec37d714bd4c2545da43add2.png        }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifcatch(Exception e)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png            log.error(e.getMessage());   

d18c02628675d0a2c816449d98bda930.png            modelMap.put("addstate","添加失败");   

ecedf933ec37d714bd4c2545da43add2.png        }d18c02628675d0a2c816449d98bda930.png           

d18c02628675d0a2c816449d98bda930.pngreturn"student_add";   

ecedf933ec37d714bd4c2545da43add2.png    }d18c02628675d0a2c816449d98bda930.png       

d18c02628675d0a2c816449d98bda930.png    @RequestMapping(params="method=del")   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoiddel(@RequestParam("id") String id, HttpServletResponse response)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.giftry9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png            Student st=newStudent();   

d18c02628675d0a2c816449d98bda930.png            st.setId(Integer.valueOf(id));   

d18c02628675d0a2c816449d98bda930.png            studentService.delete(st);   

d18c02628675d0a2c816449d98bda930.png            response.getWriter().print("{\"del\":\"true\"}");   

ecedf933ec37d714bd4c2545da43add2.png        }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifcatch(Exception e)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png            log.error(e.getMessage());   

d18c02628675d0a2c816449d98bda930.png            e.printStackTrace();   

ecedf933ec37d714bd4c2545da43add2.png        }ecedf933ec37d714bd4c2545da43add2.png    }8f1ba5b45633e9678d1db480c16cae3f.png}4f1150b881333f12a311ae9ef34da474.png

service类实现

4f1150b881333f12a311ae9ef34da474.pngpackagecom.mvc.service;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportjava.util.List;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.beans.factory.annotation.Autowired;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.stereotype.Service;   

4f1150b881333f12a311ae9ef34da474.pngimportorg.springframework.transaction.annotation.Transactional;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.pngimportcom.mvc.dao.EntityDao;   

4f1150b881333f12a311ae9ef34da474.pngimportcom.mvc.entity.Student;   

4f1150b881333f12a311ae9ef34da474.png  

4f1150b881333f12a311ae9ef34da474.png@Service  

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassStudentService9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png @Autowired  

d18c02628675d0a2c816449d98bda930.pngprivateEntityDao entityDao;   

d18c02628675d0a2c816449d98bda930.png    

d18c02628675d0a2c816449d98bda930.png @Transactional  

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicListgetStudentList()9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png  StringBuffer sff=newStringBuffer();   

d18c02628675d0a2c816449d98bda930.png  sff.append("select a from").append(Student.class.getSimpleName()).append("a");   

d18c02628675d0a2c816449d98bda930.png  Listlist=entityDao.createQuery(sff.toString());   

d18c02628675d0a2c816449d98bda930.pngreturnlist;   

ecedf933ec37d714bd4c2545da43add2.png }d18c02628675d0a2c816449d98bda930.png    

97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidsave(Student st)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png  entityDao.save(st);   

ecedf933ec37d714bd4c2545da43add2.png }97e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoiddelete(Object obj)9b8a8a44dd1c74ae49c20a7cd451974e.png{   

d18c02628675d0a2c816449d98bda930.png  entityDao.delete(obj);   

ecedf933ec37d714bd4c2545da43add2.png }8f1ba5b45633e9678d1db480c16cae3f.png}

OK,例子写完。有其它业务内容,只需直接新建view,并实现相应comtroller和service就行了,配置和dao层的内容基本不变,也就是每次只需写jsp(view),controller和service调用dao就行了。

怎样,看了这个,spring mvc是不是比ssh实现更方便灵活。

完整源码:srping mvc注解实现(在这篇文章的后面附件,这个是我另一个博客的地址)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值