【springmvc 3】----配置 VS 注解方式

来源:互联网 发布:网站数据库设计 编辑:程序博客网 时间:2024/06/12 16:06


【springmvc 3】----配置 VS 注解方式







    Springmvc 在springmvc-xml有配置和注解方式两种,今天小编对两种都方式都进行了

一个代码的实践,我们发现,现在其实是发注解方式是比较的常用的,注解方式简单、

方便可见一斑:



配置方式的代码:


    springmvc -xml:

<!-- 需要配置controller,handlerMapping,ViewResolver, interceptor -->                <!-- 映射处理器之间是独立的,不相互影响 -->        <!-- 默认的映射处理器 -->        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>                <!-- 简单url的映射处理器 -->        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">            <property name="mappings">                <props>                    <prop key="/hello1.do">testController</prop>                </props>            </property>        </bean>                <!-- 控制器的类名映射处理器 -->        <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>                <!-- 使用默认的映射处理器来映射controller -->        <bean id="testController" name="/hello.do" class="cn.itcast.springmvc.TestController"></bean>  


      
TestController.java:
 
public class TestController extends AbstractController {@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception {System.out.println("hello springmvc");//viewName不是jsp的名称而是前缀与后缀之间的路径字符串return new ModelAndView("jsp1/index");}}






注解方式代码


   (只要将上面的配置方式换成MVC注解驱动+扫描即可):

 

handler 实现的两个注解: @Controller 标志它是一个控制器; @RequestMapping("/url")



springmvc-xml:
<!-- mvc注解的驱动 -->                    <mvc:annotation-driven/>        <!-- 一档有扫描器的定义MVC:annotation-driven 就不需要,扫标签已经有了注解驱动的功能 -->        <context:component-scan base-package="cn.itcast.springmvc"/>        


TestController.java
@Controller //用来标注当前类 springmvc的控制层类@RequestMapping("/test")// controller ,唯一标识或命名空间public class TestController {  //有哪些注解方式:@controller同类别的注解: @service 一般用于服务层  ,@component 标注无法分层的类 ,@response 标注DAO层        /**      * 方法的返回值代表 ModelAndViewH懂得ViewName     * @return     */    @RequestMapping("/hello.do")//用来访问控制层方法的主角        public String hello()    {        System.out.println("you did a good job, Daniel!");        return"jsp1/index";            }




最后的显示结果:

其实两种情况都是相同的如下:


         


 
index.jsp页面显示:

               
  
 


 
整个例子代码如下:
 

                     
  
 


springmvc-xml:

<?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:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd         http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">                                                            <!--  需要配置方式:controller,handlerMapping,ViewResolver, interceptor                 映射处理器之间是独立的,不相互影响        默认的映射处理器        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>                简单url的映射处理器        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">            <property name="mappings">                <props>                    <prop key="/hello1.do">testController</prop>                </props>            </property>        </bean>                控制器的类名映射处理器        <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>                使用默认的映射处理器来映射controller        <bean id="testController" name="/hello.do" class="cn.itcast.springmvc.TestController"></bean>         -->                           <!--使用注解方式 -->         <!-- mvc注解的驱动 -->                    <mvc:annotation-driven/>        <!-- 一档有扫描器的定义MVC:annotation-driven 就不需要,扫标签已经有了注解驱动的功能 -->        <context:component-scan base-package="cn.itcast.springmvc"/>                                  <!-- 前缀+ viewName +后缀 -->        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">            <!-- webroot到某一指定的文件夹的路径 -->            <property name="prefix" value="/WEB-INF/jsp/"></property>            <!-- 视图名称的后缀 -->            <property name="suffix" value=".jsp"></property>        </bean></beans>




web-xml:
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"    id="WebApp_ID" version="2.5">        <!-- 中央控制器 -->    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    </servlet>        <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <!-- struts习惯使用/*,在springmvc不管用 -->        <url-pattern>*.do</url-pattern>    </servlet-mapping>    </web-app>





index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>    <body>    hello springmvc!you   are so good!</body></html>





TestController.java:
package cn.itcast.springmvc;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller //用来标注当前类 springmvc的控制层类@RequestMapping("/test")// controller ,唯一标识或命名空间public class TestController {  //有哪些注解方式:@controller同类别的注解: @service 一般用于服务层  ,@component 标注无法分层的类 ,@response 标注DAO层        /**      * 方法的返回值代表 ModelAndViewH懂得ViewName     * @return     */    @RequestMapping("/hello.do")//用来访问控制层方法的主角        public String hello()    {        System.out.println("you did a good job, Daniel!");        return"jsp1/index";            }    }




最终的显示结果其实两种情况都是相同的如下:


            


 
index.jsp页面显示:

                    
  






0 0