美文网首页
[4]第一个接口-学Java的iOS开发者

[4]第一个接口-学Java的iOS开发者

作者: 大师的书 | 来源:发表于2019-10-25 18:25 被阅读0次

本次学习我们有两个目标

  1. 完善SpringMVC框架
  2. 写出来第一个接口并访问

完善SpringMVC框架

上次我们引入了最基本的SpringMVC框架的依赖,但一个依赖是远远不够的,SpringMVC有一系列框架,各司其职,下面我们就开始吧,需要什么引什么,让我带你一步一步学习SpringMVC框架

  1. 首先创建文件结构,我们的先不使用项目间互相依赖,先使用一个项目多个文件夹分结构。主要结构如下


    主要结构
  2. 是不是一下看到太多东西无法接受,别慌,这只是个总揽,创建完后的效果。现在我们才真正开始创建了。如果接上篇文章的话,你现在的目录应该是这样的


    原始目录
  3. 首先,我们在main文件夹下创建一个Class文件夹,用于存放我们的源码,名字可以随便起哈。然后再在Class文件夹下创建5个文件夹,分别是AopBeanControllerDaoService

  • Aop,是SpringMVC中的切面,面向切面编程嘛,非侵入式的代码。
  • Bean,中主要放的是数据模型,具体和Dao层和Service层交互。
  • Controller,控制器,抛去Aop不说,Controller是跟页面最近的一层,数据进入Controller然后由Controller调用Service完成业务逻辑操作,将数据返回给页面展示。Controller在整个流程中起着总管的作用,要不能叫控制器嘛。
  • Dao,Dao层有两个方面,1. 跟数据库和模型组建映射(Mapper),2. 映射出方法跟Service做交互。Dao层可以理解为由一个一个的映射组成,这个映射一方面从数据库查数据映射至Bean中也就是模型中,一方面给Service出接口供Service调用。
  • Service,服务,真正处理业务逻辑的类,Controller调用Service,Service调用Dao获取和操作数据,完成后返回给Controller。


    创建文件夹
  1. 创建完后Class文件夹没有任何属性,我们这里放的是源码,所以需要设置一下,打开项目设置->Module->JiaoRiBao->右键点击Class->选择Sources然后OK即可。这样就在文件夹里就可以创建java文件了


    设置源码文件夹
  2. 首先我们当然先要搞入口的控制器咯,在Controller文件夹里创建一个java类,类名就叫BaseController吧,然后再在同一位置创建一个UserController继承与BaseController,这个控制器我们就用来做用户相关的操作


    创建java类
  3. 有学过Servlet的小伙伴此时应该会说,是不是忘了什么?对了,需要在web.xml中配置控制器才能访问,但我们用的是SpringMVC当然要用简便方法来操作咯,于是我们就要学习SpringMVC的第一个注解了@Controller这个注解是告诉Spring的扫描器说这是一个Spring的控制器,不注解的话需要在web.xml中注册这个控制器才行。

  4. 好了,开始操作。由于@Controller在spring-context库里所以我们要在maven里加一个依赖加。
    打开pom.xml,加之前我们先在properties标签里添加一个<spring.version>5.1.7.RELEASE</spring.version>用于统一所有的spring库版本,然后加入以下依赖

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    <scope>compile</scope>
  </dependency>

下图的${spring.version}对应刚添加的<spring.version>5.1.7.RELEASE</spring.version>这样所有spring库都用这个版本,方便统一操作,添加好以后更新maven,打开BaseController,在类的声明上方添加@Controller就可以自动提示了。同样的,UserController上也加入该注解

spring-context依赖
自动提示
@Controller

8.好,接下来再来认识一个注解@RequestMapping这个注解是声明路径用的,可以看到我图中是这样写的@RequestMapping("/user"),这样当我访问这个控制器内的方法时就要用localhost:8080/user/xxx.xx路径了

@RequestMapping
  1. 接下来再加一个注解@ResponseBody这个注解主要是用来让该Controller中方法的返回值返回到页面上

    @ResponseBody
  2. 我们先写一个登陆方法吧声明一个返回值是String入参是HttpServletRequest request新手嘛,暂时先按这样固定的写。添加一个这样的方法,方法这里再加一个@RequestMapping声明了路径"/login",访问的时候要使用localhost:8080/user/login访问到此接口。

    @RequestMapping("/login")
    String userLogin(HttpServletRequest request) {
        HashMap map = new HashMap();
        map.put("phone", request.getParameter("phone"));
        map.put("pass", request.getParameter("pass"));

        return "";
    }
登陆方法
  1. 这里我直接在接口里写了一个逻辑,就是接受phone和pass两个参数,然后返回到页面里,当然要转成json字符串返回咯,我推荐使用阿里爸爸的fastjson框架,挺方便的,打开pom.xml,加入以下依赖,更新maven
    <!-- json -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.23</version>
    </dependency>
  1. 继续修改登录逻辑,将转json加入进去,返回json字符串到页面


    添加fastjson
    转换json
  2. 接口出好了,访问一下。果然不通😂。原因是web.xml还没有配置,SpringMVC框架还没形成闭环,记不记得@Controller,要使这个注解生效还要配置一下spring-mvc库和web.xml

    404
  3. 打开pom.xml配置spring-mvc库,更新maven,是不是都轻车熟路了……

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
添加spring-mvc
  1. 接下来是重点操作咯,注意听讲,敲黑板。在webapp文件夹下创建一个SpringMVC文件夹(名字随意,方便归纳),在SpringMVC文件夹下右键->XML Configuration File->Spring Config,创建一个spring-mvc的配置文件,名字也可以随意起。完后在spring-mvc.xml加入以下内容,base-package对应的是你控制器所在的文件夹
<context:component-scan base-package="Controller"/>
创建spring-mvc配置文件
配置内容
  1. 打开项目配置,和Class设置源码文件夹的操作一样,这次我们要将SpringMVC设置为资源文件夹,别问为啥,设就完了。


    设置资源文件夹
  2. 打开web.xml,下面开始配置web.xml,首先在<web-app>标签下加入如下内容。注意咯,一大波内容,我们慢慢消化。

  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.hehe</url-pattern>
  </servlet-mapping>

讲解一下:

  • servlet标签,是servlet的设置总标签,servlet是什么东西小伙伴们可以去百度一下哈,一句两句解释不清楚。此处就不展开了,免得看着乱。
  • servlet-name标签,是此servlet的名字。
  • servlet-class标签,是指明此servlet的类,这里用spring框架中的DispatcherServlet类即可,固定这么写就行
  • init-param标签,字面意思是初始化参数
  • param-name标签,该标签的值是contentConfigLocation固定的,这表示接下来的value的值是配置的地址
  • param-value标签,是刚才创建的spring-mvc.xml配置文件的地址。路径是从SpringMVC文件夹开始的,这就是为什么把它设为资源文件夹,不设为资源是无法找到这个xml的
  • servlet-mapping标签,是一个映射,主要作用是声明本servlet处理的路径范围
  • url-pattern标签,是具体拦截的路径范围,*.hehe就是地址只能用.hehe为结尾访问,如果不想设置拦截的话,将该值设置为/就可以了。
web.xml配置完成
  1. 再次运行,访问,第一个接口就完成咯😄,恭喜恭喜!


    接口完成
  2. 总结一下:

  • web.xml中配置了servlet。1. servlet指明了以.hehe结尾的路径可以访问。2. 关联了SpringMVC的配置文件spring-mvc.xml。
  • spring-mvc.xml中关联了Controller文件夹,该文件夹下的所有控制器,只要声明@Controller注解的都会被认为是一个控制器,通过@RequestMapping注解声明了访问路径。
  • http请求访问到方法路径后会跳转到指定控制器的指定方法,使用HttpServletRequest即可获取到请求参数,然后我们的方法返回一个json字符串到页面上
  1. 然而这个接口只是一个假接口,下一章我们开始操作数据库,搞真正的接口咯

温馨提示:HttpServletRequest的getParameter方法默认只能获取到Content-Type为application/x-www-form-urlencoded格式的参数,如果是application/json格式的话需要在参数位置添加@RequestBody注解,想了解可以自行百度

学Java的iOS开发者系列文章

iOS转Java欢迎关注学Java的iOS开发者文集

相关文章

网友评论

      本文标题:[4]第一个接口-学Java的iOS开发者

      本文链接:https://www.haomeiwen.com/subject/utzjvctx.html