您的位置:首页 > 编程语言 > Java开发

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

2015-12-28 19:36 483 查看
一、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/**"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: