学习目标:
学习Spring MVC、RESTful开发风格。
二分搜索树添加元素
学习内容:
学习了ModelAndView的核心用法,以及Spring MVC整合Freemarker.掌握了如何配置freemarker
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mv="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- context:component-scan 标签作用 在Spring IOC初始化过程中,自动创建并管理com.imooc.springmvc及子包中 拥有以下注解的对象. @Repository @Service @Controller @Component --> <context:component-scan base-package="com.imooc.springmvc"></context:component-scan> <!--启用Spring MVC的注解开发模式--> <mvc:annotation-driven conversion-service="conversionService"> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <!-- response.setContentType("text/html;charset=utf-8") --> <!-- <value>text/plain;charset=utf-8</value>--> <value>text/html;charset=utf-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 将图片/JS/CSS等静态资源排除在外,可提高执行效率 --> <mvc:default-servlet-handler/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.imooc.springmvc.converter.MyDateConverter"/> </set> </property> </bean> <bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="contentType" value="text/html;charset=utf-8"/> <property name="suffix" value=".ftl"/> </bean> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl"/> <property name="freemarkerSettings"> <props> <prop key="defaultEncoding">UTF-8</prop> </props> </property> </bean> </beans>
package com.imooc.springmvc.controller; import com.imooc.springmvc.entity.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("/fm") public class FreeMarkerController { @GetMapping("/test") public ModelAndView showTest(){ ModelAndView mav = new ModelAndView("/test"); User user=new User(); user.setUsername("andy"); mav.addObject("u", user); return mav; } }
通过代码实现了如何向二分搜索树中添加元素:
public class BST<E extends Comparable<E>> { private class Node{ public E e; public Node left,right; public Node(E e){ this.e=e; left=null; right=null; } } private Node root; private int size; public BST(){ root=null; size=0; } public int size(){ return size; } public boolean isEmpty(){ return size==0; } //向二分搜索树中添加新的元素e public void add(E e){ root = add(root, e); } //向以node为根的二分搜索树中插入元素E,递归算法 //返回插入节点后二分搜索树的根 private Node add(Node node,E e){ if(node==null){ size++; return new Node(e); } if(e.compareTo(node.e)<0){ node.left=add(node.left,e); }else if(e.compareTo(node.e)>0) node.right = add(node.right, e); return node; } }
学习时间:
10:40-12:00 18:30-20:00
学习产出:
学会了如何使用ModelAndView和freemarker,并且初步了解了RESTful开发风格,其实现了真正的前后端分离。
掌握了二分搜索树的添加元素的思路,并且对二分搜索树结构有了更深入的理解。