SpringMVC案例2----基于spring2.5的注解实现

简介:
  和上一篇一样,首先看一下项目结构和jar包



web.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.     <servlet>  
  8.         <servlet-name>springmvc</servlet-name>  
  9.         <servlet-class>  
  10.             org.springframework.web.servlet.DispatcherServlet  
  11.         </servlet-class>  
  12.         <init-param>  
  13.             <param-name>contextConfigLocation</param-name>  
  14.             <param-value>  
  15.                 /WEB-INF/hib-config.xml,/WEB-INF/springmvc-servlet.xml  
  16.             </param-value>  
  17.         </init-param>  
  18.         <load-on-startup>1</load-on-startup>  
  19.     </servlet>  
  20.     <servlet-mapping>  
  21.         <servlet-name>springmvc</servlet-name>  
  22.         <url-pattern>*.do</url-pattern>  
  23.     </servlet-mapping>  
  24. </web-app>  

springmvc-servlet.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans   
  3.     xmlns="http://www.springframework.org/schema/beans"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"   
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  8.     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  9.     http://www.springframework.org/schema/context   
  10.     http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
  11.     <!-- 対web包中的所有的类进行扫描,以完成bean的创建和自动依赖输入功能 -->  
  12.     <context:component-scan base-package="com.sxt"></context:component-scan>  
  13.     <!-- 启动springmvc的注解功能,完成请求和注解POJO的映射 -->  
  14.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
  15.     <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
  16.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
  17.         <property name="suffix" value=".jsp"></property>  
  18.     </bean>  
  19. </beans>  

hib-config.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="  
  8. http://www.springframework.org/schema/beans   
  9. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  10. http://www.springframework.org/schema/tx  
  11. http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
  12. http://www.springframework.org/schema/aop   
  13. http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  14.   http://www.springframework.org/schema/context     
  15.    http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  16. ">  
  17. <context:component-scan base-package="com.sxt"></context:component-scan>  
  18. <!-- 支持aop注解 -->  
  19. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>  
  20.   
  21. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  22.     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
  23.     <property name="url" value="jdbc:mysql://localhost:3306/crud"></property>  
  24.     <property name="username" value="root"></property>  
  25.     <property name="password" value="root"></property>  
  26. </bean>  
  27.   
  28. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  29.     <property name="dataSource">  
  30.         <ref bean="dataSource"></ref>  
  31.     </property>  
  32.     <property name="hibernateProperties">  
  33.         <props>  
  34.             <prop key="hibernate.dialect">  
  35.                 org.hibernate.dialect.MySQLDialect  
  36.             </prop>  
  37.             <prop key="hibernate.show_sql">  
  38.                 true  
  39.             </prop>  
  40.             <prop key="hibernate.hbm2ddl.auto">update</prop>  
  41.         </props>  
  42.     </property>  
  43.     <property name="packagesToScan">  
  44.         <value>com.sxt.po</value>  
  45.     </property>  
  46. </bean>  
  47.   
  48. <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
  49.     <property name="sessionFactory" ref="sessionFactory"></property>  
  50. </bean>  
  51.   
  52. <!-- 配置一个JdbcTemplate实例 -->  
  53. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  54.     <property name="dataSource" ref="dataSource"></property>  
  55. </bean>  
  56.   
  57. <!-- 配置事务管理 -->  
  58. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  59.     <property name="sessionFactory" ref="sessionFactory"></property>  
  60. </bean>  
  61.   
  62. <tx:annotation-driven transaction-manager="txManager"/>  
  63. <aop:config>  
  64.     <aop:pointcut expression="execution(public * com.sxt.service.impl.*.*(..))" id="businessService"/>  
  65.     <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService"/>  
  66. </aop:config>  
  67. <tx:advice id="txAdvice" transaction-manager="txManager">  
  68.     <tx:attributes>  
  69.         <tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED"/>  
  70.         <!-- get开头的方法不需要在事务中运行。有些情况是没有必要使用事务的。比如获取数据,开启事务本身对性能本身是有一定的影响的 -->  
  71.         <tx:method name="*"/>  
  72.     </tx:attributes>  
  73. </tx:advice>  
  74. </beans>  

user类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.po;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.GenerationType;  
  6. import javax.persistence.Id;  
  7.   
  8. @Entity  
  9. public class User {  
  10.     private int id ;  
  11.     private String name ;  
  12.     private String pwd ;  
  13.     @Id  
  14.     @GeneratedValue(strategy=GenerationType.AUTO)  
  15.     public int getId() {  
  16.         return id;  
  17.     }  
  18.     public void setId(int id) {  
  19.         this.id = id;  
  20.     }  
  21.     public String getName() {  
  22.         return name;  
  23.     }  
  24.     public void setName(String name) {  
  25.         this.name = name;  
  26.     }  
  27.     public String getPwd() {  
  28.         return pwd;  
  29.     }  
  30.     public void setPwd(String pwd) {  
  31.         this.pwd = pwd;  
  32.     }  
  33.       
  34.       
  35. }  

userDao类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.dao;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.orm.hibernate3.HibernateTemplate;  
  6. import org.springframework.stereotype.Component;  
  7. import org.springframework.stereotype.Repository;  
  8.   
  9. import com.sxt.po.User;  
  10. @Repository("userDao")  
  11. public class UserDao {  
  12.     @Resource  
  13.     private HibernateTemplate hibernateTemplate ;  
  14.       
  15.     public void add(User u){  
  16.         System.out.println("userDao.add()");  
  17.         hibernateTemplate.save(u) ;  
  18.     }  
  19.     public HibernateTemplate getHibernateTemplate() {  
  20.         return hibernateTemplate;  
  21.     }  
  22.   
  23.     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {  
  24.         this.hibernateTemplate = hibernateTemplate;  
  25.     }  
  26.       
  27. }  

userService类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.service;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Component;  
  6. import org.springframework.stereotype.Service;  
  7.   
  8. import com.sxt.dao.UserDao;  
  9. import com.sxt.po.User;  
  10. @Service("userService")  
  11. public class UserService {  
  12.     @Resource  
  13.     private UserDao userDao ;  
  14.     public void add(String name){  
  15.         System.out.println("UserService.add()");  
  16.         User u = new User() ;  
  17.         u.setName(name) ;  
  18.         userDao.add(u) ;  
  19.     }  
  20.     public UserDao getUserDao() {  
  21.         return userDao;  
  22.     }  
  23.     public void setUserDao(UserDao userDao) {  
  24.         this.userDao = userDao;  
  25.     }  
  26.       
  27. }  

userController
[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.action;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6.   
  7. import com.sxt.service.UserService;  
  8. @org.springframework.stereotype.Controller("userController")  
  9. @RequestMapping("/user.do")  
  10. public class UserController{  
  11.     @Resource  
  12.     private UserService userService ;  
  13.     @RequestMapping(params="method=reg")  
  14.     public String reg(String uname){  
  15.         System.out.println("UserController.reg()");  
  16.         userService.add(uname) ;  
  17.         return "index" ;  
  18.     }  
  19.     public UserService getUserService() {  
  20.         return userService;  
  21.     }  
  22.     public void setUserService(UserService userService) {  
  23.         this.userService = userService;  
  24.     }  
  25.       
  26. }  
index,jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'index.jsp' starting page</title>  
  13.     <meta http-equiv="pragma" content="no-cache">  
  14.     <meta http-equiv="cache-control" content="no-cache">  
  15.     <meta http-equiv="expires" content="0">      
  16.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  17.     <meta http-equiv="description" content="This is my page">  
  18.     <!-- 
  19.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  20.     -->  
  21.   </head>  
  22.     
  23.   <body>  
  24.     <h1>********${params.uname}</h1>  
  25.     <h1>********${requestScope.u}</h1>  
  26.     <h1>********${requestScope.user}</h1>  
  27.   </body>  
  28. </html>  

index2.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'index2.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.     <form action="user.do">  
  27.         姓名:<input type="text" name="uname"/><br />  
  28.         <input type="hidden" name="method" value="reg">  
  29.         <input type="submit" value="注册 " />  
  30.     </form>  
  31.   </body>  
  32. </html>  

运行测试:

http://localhost:8080/springmvc02/user.do?method=reg&uname=wuhaixu

目录
相关文章
|
28天前
|
XML Java 数据库连接
spring boot 参数的过滤注解与实战
在Spring Boot应用中,对于入参的过滤,通常会涉及到对Web层的数据验证和处理。Spring Boot借助Spring框架提供了强大的验证框架支持,主要基于JSR-303/JSR-380(Bean Validation API)规范,以及Spring自身的@Valid或@Validated注解来实现请求参数的验证。以下是一些常见的使用案例来展示如何对参数进行过滤和验证。
24 1
|
1月前
|
Java Spring 容器
【Java】Spring如何扫描自定义的注解?
【Java】Spring如何扫描自定义的注解?
34 0
|
1月前
|
Java 测试技术 数据库
SpringBoot:@Profile注解和Spring EL
SpringBoot:@Profile注解和Spring EL
|
1月前
|
Java API 开发者
Spring中@import注解终极揭秘
在Spring框架中,@Import注解可以用来引入一个或多个组件,这些组件通常是通过@Bean注解定义的,当使用@Import注解时,实际上是在告诉Spring:“除了当前配置类中的bean定义外,还想包含另一个配置类(或多个配置类)中定义的bean。”
Spring中@import注解终极揭秘
|
2月前
|
监控 Java 调度
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
Spring中的任务调度:探索@Scheduled和@Schedules注解的威力
35 0
|
1月前
|
存储 缓存 Java
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
|
28天前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
23 0
|
1月前
|
Java 数据库 Spring
【spring(四)】Spring事务管理和@Transactional注解
【spring(四)】Spring事务管理和@Transactional注解
|
1月前
|
Java Spring 容器
Spring中@Autowired和@Resource注解异同点
Spring中@Autowired和@Resource注解异同点
31 0
|
6天前
|
XML Java 数据格式
进阶注解探秘:深入Spring高级注解的精髓与实际运用
进阶注解探秘:深入Spring高级注解的精髓与实际运用
23 2