zoukankan      html  css  js  c++  java
  • SpringMVC-Controller配置详解(二)

    1.通过控制器的实现方式

    SpringMVC中,对于Controller的配置方式有很多种;

    Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;

    我们需要一个参数 ModelAndView 模型视图解析器.来解析我们的视图并作出处理.

    在springMVC-servlet.xml的配置文件中需要加入:

    处理映射器

      <!--处理映射器-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    处理适配器

       <!--处理适配器-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    视图解析器

      <bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

    controller编写

    public class helloController {
        public ModelAndView hello(){
    
            ModelAndView mv = new ModelAndView();
            mv.addObject("msg","hello,springmvc");
            mv.setViewName("hello");
    
               return mv;
        }
    
    }

    2.通过注解的实现方式

    我们需要在springmvc-servlet.xml的配置文件中加入:

    注解扫描

    Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。

        <!--扫描指定包下的注解,让指定的类能够被IOC容器管理-->
        <context:component-scan base-package="org.west.controller"/>

    静态资源过滤

        <!--静态资源过滤-->
        <mvc:default-servlet-handler/>

    支持注解驱动

        <!--annotation-driven:支持MVC注解驱动 -->
        <mvc:annotation-driven/>

    视图解析器

    <bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

    我们controller的实现需要经过这三层的处理(模型,视图,控制器)配置缺一不可.

    controller的编写

    @Controller
    public class HelloWorldController {
    
        //请求映射("路径")
        @RequestMapping("/hello")
        public String hi(Model model){
            model.addAttribute("msg","Hello,SpringMVC");
            System.out.println("进入HELLO");
            return "hello"; //WEB-INF/jsp/hello.jsp
        }
    
    }

    注解Controller类似于声明Spring类的实例,是一个控制器.

    不同的请求都可以指向一个视图,但是页面结果的结果是不一样的,视图是被复用的,而控制器与视图之间是弱偶合的关系。

    3.Restful风格

    Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    通俗的来讲在我的理解来说Restful风格的传参不需要在像传统的请求一样通过"?"来传参了,我们只需要"/"就可以了.

    传统方式:   https://........add?p1=1&p2=2

    Restful风格: https://........add/p1/p2

    接下来编写一个controller看看吧!

    controller编写

    @Controller
    public class HelloWorldController {
    
        //请求映射("路径")
        @RequestMapping("/hello/{p1}/{p2}")
        public String hi(@PathVariable int p1,@PathVariable int p2, Model model){
            int sum=p1+p2;
            model.addAttribute("msg",sum);
            return "hello"; //WEB-INF/jsp/hello.jsp
        }
    
    }

    注意:  我们需要一个注解PathVariable把我们的值映射上去.

    我们传的传输类型要对应一致,否则访问不到对应的请求方法.

    使用路径变量的好处:使路径变得更加简洁;获得参数更加方便,框架会自动进行类型转换。通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法.

  • 相关阅读:
    【转】Java学习---HashMap的工作原理
    【转】Java学习---集合框架那些事
    Linux学习---linux下的彩蛋和各种有趣的命令
    【转】VMware虚拟机三种网络模式超详解
    沃顿商学院的MBA课程
    本杰明-富兰克林的13节制
    美学需要读的书
    芒格推荐书单
    回声消除(AEC)原理
    adc0和adc1
  • 原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/11320288.html
Copyright © 2011-2022 走看看