SpringMVC笔记(二)
来源:互联网 发布:dcs编程软件 编辑:程序博客网 时间:2024/06/05 16:05
配置文件的知识:
1.applicationContext.xml配置<context:annotation-config/>启动基于annotation的DI(依赖注入)管理,这个配置文件里不需要对Controller进行管理,因此配置一个<context:exclude-filter..... />告诉它不要去管理Controller;
<context:component-scan base-package="com.imooc.mvcdemo"> <context:exclude-filtertype="annotation"expression="org.springframework.stereotype.Controller"/> </context:component-scan>
2.mvc:resources 将资源文件映射到本地目录下,如一些图片文件等;
3.<mvc:annotation-driven/>可以将请求的参数绑定到控制器的输入参数默认使用DefaultAnnotationHandlerMapping;
4. DispatcherServlet可以有多个,分别处理不同路径的请求
SpringMVC上下文:
一种是与SpringMVC核心相关的,也就是Dispatcherservlet上下文,作用只是负责与SpringMVC业务相关的功能,比如HandlerMapping、Controller、ViewResolver等等,另外一种就是供所有组件调用的公共的应用程序上下文,这一部分一般是由Spring的ContextloadListener加载管理的,可以加载多个,比如controller层、service层、Dao层等等,以便于业务扩展时,可以复用ContextloadListener加载管理的组件。
这两个配置文件都需要在web.xml中进行配置。
在springmvc配置文件中,<context:annotation-config></context:annotation>意思是激活spring基于注解配置的依赖注入和控制反转,可以使用注解注入的方式来获取service层。
<context:conponment-scan>组件扫描
<mvc:annnotation-driven></mvc:annnotation>开启基于springMVC的注解,也就是可以使用注解参数绑定,使用注解映射请求等等。
<mvc:resources >配置静态资源
最后一项,配置视图解析器,一般是固定配置格式,到网上搜索即可,使用的类是InternalResourceViewResolver类。
web.xml:所有的web项目都要有最基本的配置文件,所有框架监听器、servlet都在这里配置;mvc-dispatcher-servlet.xml:是springmvc控制器层的相关配置,类似于struts2框架的struts.xml;applicattionContext.xml:是spring Bean容器的配置文件;Ioc:依赖注入AOP面向切面相关的配置,LOC主要是管理全局对象,如Session、Dao、Servlce之类的,Aop面向切面起到了过滤器的作用,一般用作事务管理(1)静态资源处理,css js imgs
<mvc:resources mapping="/resources/**localtion="/resoutces/">
(2)配置ViewResolver可以用多个ViewResolver 使用order属性排序,internalResourceViewResolver放在最后。
基础代码:
private static Logger log = LoggerFactory.getLogger(CourseController.class); private CourseService courseService; @Autowired public void setCourseService(CourseServicecourseService) { this.courseService = courseService; }CourseService有依赖关系,加上@Autowired则表示由Spring容器来管理(注入)这个依赖,而model.addAttribute(course)则是将数据放到模型里,return出来的String则表示view的具体位置,这个之前在配置文件中配置过ViewResolver,其中前置路径和文件名后缀具体指向了这个view。现代代码:
//本方法将处理 /courses/view?courseId=123 形式的URL @RequestMapping(value="/view", method=RequestMethod.GET) public String viewCourse(@RequestParam("courseId") Integer courseId, Model model) { log.debug("In viewCourse, courseId ={}", courseId); Course course = courseService.getCoursebyId(courseId); model.addAttribute(course); return "course_overview"; } //本方法将处理 /courses/view2/123 形式的URL @RequestMapping("/view2/{courseId}") public String viewCourse2(@PathVariable("courseId") Integer courseId, Map<String,Object> model) { log.debug("In viewCourse2, courseId ={}", courseId); Course course = courseService.getCoursebyId(courseId); model.put("course",course); return "course_overview"; }Restful风格的请求/courses/view2/{courseId}注:这里的{courseID}是一个参数变量;首先RequestMapping里的value要写成请求的类型@RequestMapping(value="/view2/{courseId}",method=RequestMethod.GET),然后传入的参数要引入@PathVariable("courseId") 将url中的参数传入进去,返回的数据若是一个Map要将相应数据put到map中返回。
@Controller告诉DispatcherServlet上下文这个类归他管,类级别的@RequestMapping("/courses")告诉/courses目录下的请求都归他来处理;方法级别的@RequestMapping(value="/view",method=RequestMethod.GET)告诉/view的get请求由它来处理;@RequestParam("courseId")直接将请求的参数读出来作为一个参数传入方法中传统代码:
//本方法将处理 /courses/view3?courseId=123形式的URL @RequestMapping("/view3") public String viewCourse3(HttpServletRequest request) { Integer courseId =Integer.valueOf(request.getParameter("courseId")); Course course = courseService.getCoursebyId(courseId); request.setAttribute("course",course); return "course_overview";}Binding:@RequestMapping(value="/admin", method = RequestMethod.GET, params = "add") public String createCourse(){//跳转到edit.jsp return "course_admin/edit"; }@RequestMapping(value="/save", method = RequestMethod.POST) public String doSave(@ModelAttribute Course course){ //日志输出(监控) log.debug("Info of Course:"); log.debug(ReflectionToStringBuilder.toString(course)); //在此进行业务操作,比如数据库持久化 course.setCourseId(123);//实现重定向 return "redirect:view2/"+course.getCourseId(); }
阅读全文
0 0
- springMVC笔记(二)
- SpringMVC笔记(二)
- Springmvc笔记(二)
- SpringMvc学习笔记(二)SpringMvc控制器
- SpringMVC入门笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)
- J2EE系列之SpringMVC学习笔记(二)--SpringMVC控制器
- SpringMvc学习笔记(二)- SpringMvc的执行流程
- springMVC学习笔记二(dispatcherServlet)
- 入门Demo---SpringMVC学习笔记(二)
- SpringMVC之HttpMessageConverter&RestTemplate笔记(二)
- 入门Demo---SpringMVC学习笔记(二)
- SpringMVC学习笔记(二)-----配置文件
- SpringMVC学习笔记二
- SpringMvc(二)配置SpringMvc
- [Java]去掉字符串中空格的几种方法
- 架构图积累
- ffmpeg框架阅读笔记二 : 寻找AVIOContext初始化过程,自定义初始化。
- C#实现发送短信到手机
- 百度地图定位的几个问题
- SpringMVC笔记(二)
- 使用URL读取网页内容
- 创建redis集群报错 /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load suc
- 端口调研
- JS正则表达式使用验证账号、手机号、电话和邮箱
- SQL 约束 (Constraints)
- CLion 配置 C C++ 编译环境(MinGW)
- Android studio gradle中分渠道加载res、libraries及Class
- bug修复-android中的onCreate两个参数的方法是什么鬼?