JavaEE学习(八) SpringMVC API开发

本文是学习JavaEE开发的记录笔记

大纲

安装配置Tomcat

Tomcat官网下载Tomcat压缩包

选择对应操作系统下载并解压缩到安装目录中

运行安装目录/bin/startup.bat出现Server startup in XXXX ms即服务器启动成功

此时打开浏览器输入Localhost:8080即可看到服务器默认主页

打开安装目录/conf/server.xml可修改默认监听端口,防止造成冲突,如修改成8081

搭建开发环境

  1. 在IDEA下创建Maven项目

    • 初始Maven项目结构如下
    • 改造成WEB项目结构
    1. 增加src/main/webapp/WEB-INF/web.xml存放WEB配置文件
    2. resource下增加springmvc目录存放形式如XXX-servlet.xml的SpringMVC配置文件
    3. 增加src/main/java/controller存放控制器文件
  2. 项目添加SpringMVC依赖并编写简单示例

    • 在pom.xml下添加packageing标签和SpringMVC依赖

    • 编写web.xml文件:
      web.xml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      id="WebApp_ID" version="3.0">


      <display-name>SpringMVC</display-name>

      <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!--springMVC配置文件路径-->
      <init-param>
      <param-name>contextConfigLocation</param-name>
      <!--标准SpringMVC配置文件命名为 <servlet-name>标签内容-servlet.xml -->
      <param-value>classpath:springmvc/springMVC-servlet.xml</param-value>
      </init-param>
      <!--0/正数为WEB应用启动就加载初始化Servlet 为负数/没有设置表示Servlet被请求时才加载-->
      <load-on-startup>1</load-on-startup>
      </servlet>

      <!--拦截器设置 设置<url-pattern>中的请求都由<servlet-name>定义的Servlet处理-->
      <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <!-- /代表所有其请求-->
      <url-pattern>/</url-pattern>
      </servlet-mapping>

      <!--filter解决编码问题-->
      <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>
      <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
      </init-param>
      </filter>
      <!--filter适用范围-->
      <filter-mapping>
      <filter-name>characterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
      </filter-mapping>

      </web-app>
    • 因为自己改造的项目路径不是默认的WEB项目路径,编写完的web.xml有可能出现以下错误,需要将web.xml添加到WEB路径中
    • 在项目中打开Project Struction
    • 选择Module-Web-Deployment Descriptors-Add添加自己项目的web.xml即可
    • 编写web.xml指定的SpringMVC配置文件路径下的XXX-servlet.xml:可以配置controller层的路径扫描和视图视图解析器,由于这是API开发,因此只要设置Controller的路径扫描就可以
      springMVC-servlet.xml
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:p="http://www.springframework.org/schema/p"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

      <!--扫描配置包路径下的Controller -->
      <context:component-scan base-package="controller"/>

      </beans>
    • 在指定的扫描配置包下增加一个Controller,如HelloWorld
  3. 在IDEA中配置TomCat运行简单示例项目

    • 选择运行时的配置
    • 配置本地Tomcat服务器运行项目
    • 选择使用Tomcat运行服务器并打开lcoalhost:8081/hello/world可以看到请求被Servlet拦截并转发到HelloWorld控制器

Controller的编写规则

  • @Controller:这是一个控制器类的注解,只有添加了注解才能被Servlet扫描到转发请求到控制器
  • @RequestMapping(value=”/XXX”):拦截请求路径的名称
    • 可以加在类名前或者类中方法名前
    • 类名前的注解value必须加/
    • 最终方法处理的请求为类名前的注解value+方法名前的注解value
  • @RequestMapping(method=RequestMethod.GET/POST…):拦截请求的方式,如GET/POST/DELETE/PUT等,请求方式不正确报告HTTP405错误
  • 表单请求参数的自动匹配接收:方法参数列表是提交的form表单中的字段的name相匹配的String参数列表
  • 表单请求参数的注解匹配接收:参数使用注解@RequestParam(value=”from表单中字段的name”) String Controller参数名
  • URL地址参数接收:如URL地址为YYY/XXX?a=1&b=abc,可以使用包装类类型+URL参数名称,如(Integer a,String b)
    • 为什么使用包装类类型:若使用基本类类型,无参数传递会出现HTTP400错误,使用包装类类型无参数传递会自动传递null到参数中,不会出现HTTP错误
  • 参数默认值:@RequestParam(defaultValue=””)
  • 参数可选值:@RequestParam(required=false)

使用Maven的webapp快速构建WEB项目

项目结构:典型的WEB+Maven结构,pom.xml是Maven编写项目基本信息、依赖、打包配置等文件,src/main/webapp/WEB-INF为WEB项目结构,web.xml是编写WEB项目基本信息、配置文件路径等文件,index.jsp为默认首页

  • pom.xml默认配置:
    • 项目基本信息:modelVersion(pom文件模型版本)、groupId、artifactId、version、packaging(项目打包后缀)、name/url(项目描述)
    • Maven属性:properties标签下包含的内容,如项目编码、编译版本等
    • 项目依赖:dependencies标签下的内容,默认有junit依赖
    • 项目的构建配置:build标签下的内容,其中有finalName(浏览器访问路径)、plugins(项目插件,其中有clean/resources/compiler/install/deploy等均是打包项目时需要用到的)
    • 项目添加SpringMVC依赖并编写简单示例
    • 在IDEA中配置TomCat运行简单示例项目