栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springmvc controller单例(spring mvc controller 参数)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springmvc controller单例(spring mvc controller 参数)

SpringMVC-Controller实现

前言接口定义实现

基础配置编写一个Controller类springmvc-servlet.xmltest.jsp测试缺点 注解定义实现(推荐)

编写一个ControllerTest2重点好处 RequestMapping

前言

控制器Controller

    控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。控制器负责解析用户的请求并将其转换为一个模型,也就是用model来传输数据。在Spring MVC中一个控制器类可以包含多个方法。在Spring MVC中,对于Controller的配置方式有很多种。
接口定义实现 基础配置

可以看我的上一篇博客进行基础的环境配置
Spring注解版
删除HelloController以及注释掉springmvc-servlet.xml中的扫描类和驱动类,只留下视图解析。
springmvc-servlet.xml






    
    
        
        
        
        
    

    

编写一个Controller类

ControllerTest01

package com.cjh.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


//只要实现了Controller 接口的类,说明这就是一个控制器了
public class ControllerTest01 implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
       ModelAndView mv = new ModelAndView();

       mv.addObject("msg","ControllerTest01");//添加数据
       mv.setViewName("test");//设置视图的名字,跳转的位置
        return null;
    }
}

这里通过implements Controller实现Controller接口。
通过 mv.addObject来添加访问数据,通过 mv.setViewName来设置视图的名字,即跳转的位置为test.jsp

springmvc-servlet.xml

在Spring配置文件中,添加bean,来设置其访问路径。


test.jsp

在WEB-INF中新建jsp文件夹,这样将视图放入,一定要在WEB-INF/jsp中,对应我们的视图解析器。

<%--
  Created by IntelliJ IDEA.
  User: CJH
  Date: 2022/3/20
  Time: 15:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


${msg}



测试

访问http://localhost:8000/springmvc_04_controller__war_exploded/hello1

缺点

一个控制器中只有一个方法,如果要多个方法则需要定义多个Controller;定义的方式比较麻烦

注解定义实现(推荐) 编写一个ControllerTest2
package com.cjh.controller;

import org.springframework.stereotype.Component;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//代表这个类已经被spring接管了
@Component
public class ControllerTest02 {

    @RequestMapping("/hello2")
        public String test1(Model model){

        //传数据用model来传数据就可以
            model.addAttribute("msg","ControllerTest02");
            return "test";
        }
}

如果返回值是String,像上面返回的是一个test,并且有具体的页面可以跳转,那么就会被视图解析器解析,如果没有,就会报404

重点

1、这里我们通过@Component这个注解来实现controller

2、通过 @RequestMapping来设置访问路径

3、通过model.addAttribute来传输数据,以及跳转的视图。

好处

这样不需要在spring配置文件中,添加bean文件,简化了操作。

可以在controller中写多个方法,可以共用一个页面。

RequestMapping

@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

为了测试结论更加准确,我们可以加上一个项目名测试 myweb

只注解在方法上面

@Controller
public class TestController {
   @RequestMapping("/hello1")
   public String test(){
       return "test";
  }
}

访问路径:http://localhost:8080 / 项目名 / hello1

同时注解类与方法

@Controller
@RequestMapping("/admin")
public class TestController {
   @RequestMapping("/hello1")
   public String test(){
       return "test";
  }
}

访问路径:http://localhost:8080 / 项目名/ admin /hello1 , 需要先指定类的路径再指定方法的路径,就是加多一层地址。

最好不要在类上面写路径,报错的话不方便排查,可以直接这样写 @RequestMapping("admin/hello1")。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号