转载

springMVC总结(一)

  • 学一段时间的springMVC常见的功能撸的差不多了,发个总结出来!
  • springMVC和servlet原理一样,只是一个控制器,大部分都差不多,就是springMVC用起来比servlet更方便,有各种各样的注解。相当于你用servlet需要1000行代码,你用springmvc只需要100行左右代码
  • 学任何的东西都从Hollo World 开始,下面是springmvc入门的hello world

web.xml配置文件

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--映射springMVC配置-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--启动时第一个加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
复制代码
  • 是不是似曾相识,和servlet配置几乎一模一样
springmvc.xml
<!--配置自动扫描器,扫描有控制器的包-->
    <context:component-scan base-package="com.haiyang.web.servlet" />
    <!--配置根视图,就是首页-->
    <mvc:view-controller path="/" view-name="index"/>
    <!--配置视图解析器,用于将返回的字符串渲染视图-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--渲染视图的前缀-->
            <property name="prefix" value="/views/"/>
             <!--渲染视图的后缀-->
            <property name="suffix"  value=".jsp"/>
    </bean>
复制代码

控制器

@Controller  //声明这个类是个控制器
public class hello {
    @RequestMapping(value = "hello")//对前端hello的请求进行处理
    public  String HelloWorld(Model model) {
        //通过model将我们要输入的值放入域中
        model.addAttribute("hello", "spring mvc hello world");
        //返回要跳转的页面,会通过springmvc.xml中的视图解析器进行处理
        //给返回的字符串加上前缀和后缀 例:/views/success.jsp
        return "success";
    }
复制代码

index页面

<a href="hello">Hello Spring</a>
复制代码
  • 很简单,用超链接来请求控制器。

success页面

<h2>欢迎来到成功页面</h2>
 ${hello}
复制代码
  • 是不是很简单,看完你完全可以去敲你的第一个springmvc程序

还有一个注意点:就是success页面显示了${hello},说明解析不了el表达式。加上下面这句就可以了

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
复制代码
  • OK,学完hello world,我们来了解一下上面用到的@RequestMapping注解

@RequestMapping注解

他有四个参数,分别是value,method,params,headers。

  • value:用来设置要映射的URL
  • method:用来设置映射的请求方法
  • params:用于根据请求参数进行映射
  • headers:用于设置根据请求头部属性进行的映射。

@RequestMapping注解ant风格的通配符

通配符也有四个,分别是 ? ,* ,** ,{ };

  • ?:匹配文件夹中的一个任意字符
  • *:匹配文件夹中的多个任意字符
  • **:匹配多层路径
  • {}:占位符

下面一些通配符的案例

控制器

@RequestMapping("hello/a?c/test")
    public  String Hello(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
         }
复制代码

index

<a href="hello/abc/test">Hello Spring1</a>
复制代码
  • ?相当于一个字符,所以?可以用任意字符来代替,我上面用的是b来代替。也可以正常访问success页面

控制器

@RequestMapping("hello2/*/test")
    public  String Hello2(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
    }
复制代码

index

<a href="hello2/gfdsgfdsg/test">Hello Spring2</a>
复制代码
  • 相当于多个任意字符,所以*可以用多个任意字符代

控制器

@RequestMapping("hello3/**/test")
    public  String Hello3(Model model) {
        model.addAttribute("abc", "spring mvc hello");
        return "success";
    }
复制代码

index

<a href="hello3/abc/safd/sfdsf/eee/test">Hello Spring3</a>
复制代码
  • 相当于多层路径,所以**可以用多个路径来代替

控制器

@RequestMapping("hello4/{name}")
    public  String Hello4(@PathVariable("name") String name) {
        System.out.println(name);
        return "success";
    }
复制代码

index

<a href="hello4/zs">Hello Spring4</a>
复制代码
  • {}只是个占位符,用来接收前端转来的数据
  • 上面出现了@PathVariable,说一下这个注解的作用吧。@PathVariable注解用于获取请求中的参数,并注入到方法参数中,该注解用于方法参数上
原文  https://juejin.im/post/5e806425f265da47ae4aabd0
正文到此结束
Loading...