前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC入门(一)

SpringMVC入门(一)

作者头像
晚上没宵夜
发布2020-03-11 14:24:25
4300
发布2020-03-11 14:24:25
举报

1. 工作流程

  • 用户请求服务器,然后核心控制器捕获请求
  • 核心控制器交由映射器把请求url和控制器进行映射
  • 核心控制器交由适配器调用映射的控制器,中间还进行数据转换
  • 对应的控制器的逻辑操作完成后返回ModelAndView或String
  • 视图解析器解析ModelAndView
  • 返回一个View
  • 用户看到请求的数据
  • 笔者目前的操作都是返回String,然后前端Ajax异步获取数据,所以下面演示也用String类型的返回值
  • 并且都是基于注解

2. 步骤

2.1 工程目录及jar包

2.2 配置Web.xml

代码语言:javascript
复制
<!-- 配置spring的核心控制器 -->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置servlet初始化参数,告知applicationContext位置 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
    <!-- 启动顺序 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<!-- 映射地址 -->
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
    

<!-- 编码过滤器,解决传送过来的参数乱码问题 -->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
    
    
<!-- 欢迎页 -->
<welcome-file-list>
    <welcome-file>/WEB-INF/pages/index.html</welcome-file>
</welcome-file-list>

2.3 配置applicationContext.xml

代码语言:javascript
复制
<!-- 告知sptring创建容器时要扫描的包 -->
<context:component-scan base-package="com.howl.controller"/>


<!-- 配置springmvc的视图解析器,这里不使用 -->
<!-- <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"></property>
    <property name="suffix" value=".html"></property>
</bean> -->
    

<!-- 注册HandlerMapping,HandlerAdapter -->
<mvc:annotation-driven >
    <!-- response设置utf-8,解决返给前端中文乱码问题 -->
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

2.4 创建Controller

代码语言:javascript
复制
package com.howl.controller;

@Controller("UserController") //注解控制器
@RequestMapping("/User") //分模块地址映射
@ResponseBody  //返回字符串,不是ModelandView
public class UserController {
    
    @RequestMapping(value="/add",method=RequestMethod.GET) //指定访问方法
    public String add(){
        System.out.println("执行了add方法");
        return "{'code' : '0000','msg' : '执行了add方法'}"; //返回值json
    }
    
//模块测试,先忽略后面讲解------------------[开始]    
    @RequestMapping("/update")
    public String update(){
        System.out.println("执行了update方法");
        return "执行了update方法";
    }
//模块测试--------------------------------[完]
    
    @RequestMapping("/insert")
    public String insert(int id){
        System.out.println("执行了insert方法,id="+ id);
        return "执行了insert方法,id="+ id;
    }

}

2.5 前端页面

代码语言:javascript
复制
<body>
    <a href="User/add.do">add</a>
    <a href="update.do">update</a>  <!-- 这里测试分模块,后面会讲解,先略过 -->
    <a href="User/insert.do?id=1">insert</a>
</body>
  • 前端点击add与insert链接的时候,分别返回
  • 这里注意,前端发送参数的属性name要和对应方法的参数名字类型一致

2.6 模块测试

  • 笔者在UserController加了@RequestMapping("/User"),设置了模块
  • 而且UserController里确实写了@RequestMapping("/update")
  • 但是访问前端页面的update链接的时候 -_- !! 找不到对象 !!

究其原因:是分模块的锅,仔细看二者的url区别

  • add——http://localhost:8080/Springmvc/User/add.do
  • update——http://localhost:8080/Springmvc/update.do
  • 可以看到二者地址栏区别在于/User/,没错就是在类上配置的@RequestMapping("/User")
  • 这个注解可以用在模块化管理,十分便利,比如访问用户/User/,访问问题/Question/,一眼就看出来
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 工作流程
  • 2. 步骤
    • 2.1 工程目录及jar包
      • 2.2 配置Web.xml
        • 2.3 配置applicationContext.xml
          • 2.4 创建Controller
            • 2.5 前端页面
              • 2.6 模块测试
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档