springmvc02

springmvc02

spring核心类和注解

1.DispatcherServlet

DispatcherServlet的全名是org.springframework.web.servlet.DispatcherServlet,它在程序中充当着前端控制器的角色。在使用时,只需将其配置在项目的web.xml文件中,其配置代码如下:

  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!--配置spring的配置文件 若为 servlet-name-servlet.xml 可以不写  -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
  </servlet>



  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!--设置为默认确醒的servlet,中不到匹配时,就匹配这一个-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

2.@Controller注解

org.springframework.stereotype.Controller注解类型用于指示Spring类的实例是一个控制器,其注解形式为@Controller。该注解在使用时不需要再实现Controller接口,只需要将@Controller注解加入到控制器类上,然后通过Spring的扫描机制找到标注了该注解的控制器即可。

@Controller
public class FirstController {

    @RequestMapping(value = "/first",method = RequestMethod.GET)
    public ModelAndView first(){
        // 数据 和  view 的封装
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg","first");

        modelAndView.setViewName("jsp/hello.jsp");
        return modelAndView;
    }


    @RequestMapping("/first2")
    public ModelAndView first2(){
        // 数据 和  view 的封装
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg","first2");

        modelAndView.setViewName("jsp/hello.jsp");
        return modelAndView;
    }
}

注意扫描必须配置

    <!--
        使用注解开发springmvc web
    -->
    <!--开启包扫描器 让contrller生成 bean  -->
    <context:component-scan base-package="com.wgz.spring.controller"/>
    <!--开启 url注解 绑定 handler 和 url -->
    <mvc:annotation-driven />

<mvc:annotation-driven />主要做用

启用后,Spring会默认帮我们注册处理请求,参数和返回值的类。,其中最主要的两个类:DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter ,

3@RequestMapping

Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的,这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。使用时,可以标注在一个方法或一个类上。

@Controller
@RequestMapping("/HiController")
public class HiController {

    // value = {"/hi","/hi2"}, 与 path = {"/hi3","/hi4"} 等价,只能设置一个 method指定访问的类型
    @RequestMapping(path = {"/hi3","/hi4"},name = "hiname",method = RequestMethod.GET)
    public ModelAndView hi(){

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg","hi");
        modelAndView.setViewName("/jsp/hello.jsp");
        System.out.println("controller");
        return modelAndView;
    }
    }
  1. 标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用
  2. 该类中的所有方法都将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。

4.组合注解

Spring框架的4.3版本中,引入了新的组合注解,来帮助简化常用的HTTP方法的映射,并更好的表达被注解方法的语义。

  • @GetMapping:匹配GET方式的请求;
  • @PostMapping:匹配POST方式的请求;
  • @PutMapping:匹配PUT方式的请求;
  • @DeleteMapping:匹配DELETE方式的请求;
  • @PatchMapping:匹配PATCH方式的请求。
@Controller
@RequestMapping("/HiController")
public class HiController {

    // value = {"/hi","/hi2"}, 与 path = {"/hi3","/hi4"} 等价,只能设置一个
    //@RequestMapping(path = {"/hi3","/hi4"},method = RequestMethod.GET)
    @GetMapping(path = {"/hi3","/hi4"})   // 两者等价
    public ModelAndView hi(){

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("msg","hi");
        modelAndView.setViewName("/jsp/hello.jsp");
        System.out.println("controller");
        return modelAndView;
    }
   }

5.请求处理方法自带的参数和返回类型

在控制器类中,每一个请求处理方法都可以有多个不同类型的参数,以及一个多种类型的返回结果。在请求处理方法中,可以出现的参数类型如下:

javax.servlet.ServletRequest / javax.servlet.http.HttpServletRequest
javax.servlet.ServletResponse / javax.servlet.http.HttpServletResponse
javax.servlet.http.HttpSession
java.util.Map / org.springframework.ui.Model /org.springframework.ui.ModelMap

返回值类型

ModelAndView  可以添加Model数据,并指定视图
String        返回jsp视图地址  最为常用
void		  在异步请求时使用,它只返回数据,而不会跳转视图

    @GetMapping(value = "/play")
    public String play(HttpServletRequest request, HttpServletResponse response,Model model){
        model.addAttribute("msg","踢足球");
        return "hello";
    }

转发与重定向


    /**
     * 重定向  必须加  /
     * @return
     */
    @GetMapping("/redirectTest")
    public String redirectTest(){

        return "redirect:/HiController/play";
    }

    /**
     * 转发
     * @return
     */
    @GetMapping("/forwardTest")
    public String forwardTest(){

        return "forward:/HiController/play";
    }

6.ViewResolver视图解析器

视图解析器的目的就是帮助我们简化view的路径,为我们自动补全jsp的路径

Spring MVC中的视图解析器负责解析视图。可以通过在配置文件springmvc-servlet.xml中定义一个ViewResolver来配置视图解析器,其配置示例如下:

 <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
           <property name="prefix" value="/jsp/"></property> <!--前缀-->
           <property name="suffix" value=".jsp"></property>  <!--后缀-->
        </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值