发表于: 2018-01-15 23:15:02

1 653


一、今天完成的任务
1、接着看@PathVariable

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 模板中对应的变量的值来赋值。

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。

//@PathVariable可以用来映射URL中的占位符到目标方法的参数中

@RequestMapping("/testPathVariable/{id}")

    public String testPathVariable(@PathVariable("id") Integer id)

    {

        System.out.println("testPathVariable:"+id);

        return SUCCESS;

    }

//删除,加上返回当前页面
@RequestMapping(value = "/student/{id}&{page}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Long id, @PathVariable("page") Integer page) {
serviceImpl.deleteStudent(id);
   return "redirect:/student/index?currentPage=" + page;
}

2、ModelMap 

ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数: 

addAttribute(String key,Object value); 

在页面上可以通过el变量方式$key或者bboss的一系列数据展示标签获取并展示modelmap中的数据。

public String getdata(@PathVariable ("id") Long id, ModelMap model) {
Student s = serviceImpl.getStudentById(id);
   model.addAttribute("newstudent", s);

modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的返回值来设置跳转url地址别名或者物理跳转地址。 

ModelMap的实例是由bboss mvc框架自动创建并作为控制器方法参数传入,用户无需自己创建。

二、明天计划的事情

连续两天半天假,就看自己会不会利用时间了,权当考验了。看大家进度,都完成了增删查改,明天一起学习json好了,跑通。

三、遇到的问题

1、小问题。

2、关于什么时候用post,什么时候用get,要看功能,从字面理解,一个传递,一个获取。可能从数据库中取数据就用到get,这里,我得想想。

百度:Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

@RequestMapping(value = "/student/list", method = RequestMethod.GET)       /*什么时候用post,用get*/
public String list(Model model) {                              /*model传递页面模型*/
   List<Student> list = serviceImpl.getAll();
   List<StudentPut> list2 = new ArrayList<>();                     /*ArrayList用法*/
   for (Student student1 : list) {                            /*foreach 循环*/
       list2.add(ChangeUtil.timeChange(student1));                 /*timechange方法干嘛用*/

3、

<dependency>
 <groupId>org.aopalliance</groupId>
 <artifactId>com.springsource.org.aopalliance</artifactId>
 <version>1.0.0</version>                                   <!--出问题少了他-->
</dependency>
<dependency>
 <groupId>org.aspectj</groupId>
 <artifactId>aspectjweaver</artifactId>                          <!--搜一搜-->
 <version>1.8.9</version>

</dependency>

org.aopalliance 这个包是AOP联盟的API包,里面包含了针对面向切面的接口。

通常Spring等其它具备动态织入功能的框架依赖此包。

关于什么动态织入,正好在找org.aspectj遇到了。

Spring Aop:Spring自己原生的Aop,只能用一个词来形容:难用。需要实现大量的接口,继承大量的类,所以spring aop一度被千夫所指。这于他的无侵入,低耦合完全冲突。不过Spring对开源的优秀框架,组建向来是采用兼容,并入的态度。所以,后来的Spring 就提供了Aspectj支持,也就是我们后来所说的基于纯POJO的Aop。

区别:Spring Aop采用的动态织入,而Aspectj是静态织入。静态织入:指在编译时期就织入,即:编译出来的class文件,字节码就已经被织入了。动态织入又分静动两种,静则指织入过程只在第一次调用时执行;动则指根据代码动态运行的中间状态来决定如何操作,每次调用Target的时候都执行。总结:知道是什么东西,怎么用就行,用到aop就加上他两。不深究。底层的,现在理解真的很难。

四、收获

这个Java,真是待我如初恋,虐我千百遍,心态爆炸又能怎么样,还是硬着头皮学呗,还好今天给面子,给了点阳光,心情好了点,接下来也要阳光下去,我不喷苦水,不吐槽了。

再者现在进入这种模式也是没办法,搞不定,随随便便改了哪里都跑不通,瞎改毫无进度,是我想的简单了,先弄懂再学会改内容吧。师兄说的对,师兄说得对。可以开心睡觉了

任务开始时间:2018.01.01
预计提交时间:2018.01.21
是否有延期风险:无,已延期



返回列表 返回列表
评论

    分享到