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/**"/>
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/**"/>
相关文章推荐
- javaweb中静态文件的常用处理方法汇总
- Java的接口和抽象类
- Java并发同步器--Semaphore
- 《编程导论(Java)·3.2.4 循环语句》
- 关于struts2中的result
- Java 计算两个日期之间有哪些日期
- eclipse如何使用Git实现双向工程
- java各种错误汇总
- java中线程和I/O口的主要知识点
- Java Web基础整理-JDBC编程
- The Java Programming Language4th读书笔记-第十章 控制流
- JAVA中构造函数的参数传递给类中的实例变量
- Spring框架学习
- Java Web系列:认证和授权基础
- Java关键字final、static使用总结
- java中UDP服务器和客户端
- jacob操作office文档
- 构建高性能服务(二)java高并发锁的3种实现
- The Java Programming Language4th读书笔记-第九章 运算符和表达式
- java相关