发表于: 2018-01-14 21:51:27

1 613


一、今天完成的任务

1、SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。

@Controller
public class MyController {
@Autowired
   private StudentService studentService;
   private Student student;
   private Logger logger = Logger.getLogger(MyController.class);

@RequestMapping(value = "/student/newone",method = RequestMethod.POST)
public String newone(){
return "add";
}

代码中, @Controller 是标记在类MyController 上面的,所以类MyController 就是一个SpringMVC Controller 对象了。

然后使用@RequestMapping(“/student/newone”) 标记在Controller 方法上,,表示当请求/student/newone 的时候访问的是MyController 的student/newone方法。所以@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。

有两种方式可以把MyController 交给Spring 管理,好让它能够识别我们标记的@Controller 。

   第一种方式是在SpringMVC 的配置文件中定义MyController 的bean 对象。

<bean class="com.host.app.web.controller.MyController"/>

  第二种方式是在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。

<!--配置组件扫描路径-->
<context:annotation-config/>
<context:component-scan base-package="com.jnshu.controller"/>
<context:component-scan base-package="com.jnshu.util"/>

接着看@RequestMapping 来映射URL 到控制器类,或者是到Controller 控制器的处理方法上。

当@RequestMapping 标记在Controller 类上的时候,里面使用@RequestMapping 标记的方法的请求地址都是相对于类上的@RequestMapping 而言的;当Controller 类上没有标记@RequestMapping 注解时,方法上的@RequestMapping 都是绝对路径。这种绝对路径和相对路径所组合成的最终路径都是相对于根路径“/ ”而言的。

如果我们在控制器上加了@RequestMapping 注解,比如说下面这样

@Controller
@RequestMapping("/student")
public class MyController {

所以当需要访问到里面使用了@RequestMapping 标记的方法newone() 的时候,就需要使用newone 方法上@RequestMapping 相对于控制器MyController 上@RequestMapping 的地址,即/student/student/newone 。所以又可以简化了。

再看看student/newone。URI 模板就是在URI 中给定一个变量,然后在映射的时候动态的给该变量赋值。如URI 模板http://localhost/app/{variable1}/index.html ,这个模板里面包含一个变量variable1 ,那么当我们请求http://localhost/app/hello/index.html 的时候,该URL 就跟模板相匹配,只是把模板中的variable1 用hello 来取代。在SpringMVC 中,这种取代模板中定义的变量的值也可以给处理器方法使用,这样我们就可以非常方便的实现URL 的RestFul 风格。这个变量在SpringMVC 中是使用@PathVariable 来标记的。

   在SpringMVC 中,我们可以使用@PathVariable 来标记一个Controller 的处理方法参数,表示该参数的值将使用URI 模板中对应的变量的值来赋值。

二、明天计划的事情

新的一周开始,按照新的学习方法去学习啦,时间很紧,本周很忙,本周准备下周一小课堂,

任务二web.xml里的主要配置都包括什么,都代表什么含义,比如怎么加载Spring 配置的?

三、遇到的问题

学习中,逐字逐句的去理解

1、小课堂选题目有什么好的建议,最好结合当前任务的

四、收获
时间都是挤出来的,点滴也可以学习啊,星期天虽然很忙,但是听着师兄也很忙,晚上还学习,很惭愧,碎片化时间做得很差。
任务开始时间:2018.01.01
预计提交时间:2018.01.21
是否有延期风险:无,已延期



返回列表 返回列表
评论

    分享到