spring3.1xml配置和注解两种方式总结

本文详细介绍了Spring MVC框架中XML配置方法及注解方式的使用,包括DispatcherServlet配置、Controller类的实现、视图解析器的编写以及静态资源处理。同时对比了XML配置与注解方式的不同之处,并提供了实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



一、xml配置方法
1、在web.xml新建servlet,指向spirng的DispatcherServlet
<servlet>  
    <servlet-name>test2</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
    </servlet>  
   <servlet-mapping>  
    <servlet-name>chapter2</servlet-name>  
    <url-pattern>/basic/*</url-pattern>  
   </servlet-mapping>  


2、配置test2-servlet.xml,这里的test2与servlet名称对应
<!--  HandlerMapping映射  -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>  
   
<!--  HandlerAdapter适配器   --> 
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>  
<!--  视图解析器   --> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="" />
<property name="suffix" value="" />
</bean>
<bean name="/hello" class="web.HelloWorldController"/><!-- 拦截路径/hello,进入自己的控制器  -->
3、HelloWorldController控制器
public class HelloWorldController implements Controller {

@Override  
   public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {  
      //1、收集参数、验证参数  
      //2、绑定参数到命令对象  
      //3、将命令对象传入业务对象进行业务处理  
      //4、选择下一个页面  
System.out.println("控制器。。。。");
      ModelAndView mv = new ModelAndView();  
      //添加模型数据 可以是任意的POJO对象  
      mv.addObject("message", "Hello World!");  
      
      //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面  
      mv.setViewName("hello");  
      return mv;  
   }  
}
4、编写设置的视图解析器:hello.jsp可以通过 prefix,suffix配置路径和后缀


二、注解方式
不同地方:
1、xml配置:
<context:component-scan base-package="web"> 扫描controler类的包,扫描方式
   <!--  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 注解特定的类
    <context:include-filter type="regex" expression="com\.baobaotao\.service\..*"/> 通过正则表达式定义过滤的类
    <context:exclude-filter type="aspectj" expression="com.baobaotao.util..*"/>     通过 AspectJ 表达式定义过滤的类 -->
  </context:component-scan>
  
  <mvc:annotation-driven />  //是一种简写方式, 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
 2、controller类:
@Controller
@RequestMapping("hello")
public class TestZjController {
@RequestMapping(value = "/hello1",produces="text/html; charset=UTF-8")
public String sayHello(Model model){
model.addAttribute("message", "sayHello");
System.out.println("注册的控制器");
return "/WEB-INF/jsp/hello1.jsp";
}
}
总结:
1、配置web.xml时,如果拦截的是/,而不是/*,则所有的请求都会被当成.txt格式,在jsp页面直接显示代码。
2、类路径和方法路径,有效的拦截路径是去掉web.xml里面的拦截路径之后的路径:
如:web.xml拦截 <url-pattern>/basic/*</url-pattern>  
类拦截:@RequestMapping("hello")
方法拦截:@RequestMapping(value = "/hello1",produces="text/html; charset=UTF-8")
则请求路径为:http://192.168.73.37:8080/tstrb/basic/hello/hello1(tstrb为项目名称)


另外:总结下Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler />
 1、<mvc:default-servlet-handler /> //通过default-servlet-name属性显示指定: <mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" /> 
先调整web.xml中的DispatcherServlet的配置,使其可以捕获所有的请求:<url-pattern>/</url-pattern>  


2、<mvc:resources />允许静态资源放在任何地方:<mvc:resources location="/,classpath:/META-INF/publicResources/" mapping="/resources/**"/>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值