美文网首页Java 学习笔记
SpringMVC SSM框架笔记一:从零开始创建Web接口项目

SpringMVC SSM框架笔记一:从零开始创建Web接口项目

作者: 仙大 | 来源:发表于2019-12-02 17:08 被阅读0次

开发环境

  • IntelliJ IDEA 2019-02
  • win10 64位
  • java 1.8

创建项目

  • 打开IDEA,new - project
  • 选择JAVA - JAVA EE - Web Application,记住勾选Create web.xml
  • 下一步输入项目名 - Finish


    图片.png

创建完成之后,目录结构大致如下:


图片.png
ROOTDIR  <!--项目根目录-->
    -src
    -web
        -WEB-INF
            -web.xml <!--这是Servlet项目的配置文件-->
        -index.jsp

创建包名、目录层级

我这里包名暂定为 com.test


图片.png
  • bean 定义数据库映射对象
  • common 存放公共类、工具类
  • dao 定义Mybatis访问层,通过dao里面的接口访问数据库
  • service 存放处理业务流程的类
  • controller 控制器,存放接口定义的类

引入maven包管理

  • 鼠标在项目根目录上邮件 - 选择Add Framework Support
  • 勾选maven,点击OK,项目会在根目录下生成pom.xml文件,这就是项目的maven依赖管理配置文件
  • 弹窗选择Enable Auto-Import,打开自动引用,修改pom.xml后会自动修改变更的引用

引入Spring MVC到项目

  • 打开pom.xml,按住Alt+Insert,选择Dependence
  • 搜索 org.springframework ,选择spring-webmvc最新版本
  • 点击Add后,springmvc会自动添加到项目引用

接下来干啥?当然是跑个接口试试呗!

创建一个接口吧

  • 在 src/main/java 目录中创建一个包名:com.test
  • 创建控制器类:Location.kt
@Controller //控制器
@ResponseBody //接口返回需要这个注解
@RequestMapping("/location")//路径
class Location {

    @RequestMapping("/test")
    fun test(): Any {
        return HashMap<String, Any>().apply {
            put("code", 1)
            put("msg", "yes")
        }
    }
}

如何让它跑起来呢?应该让spring框架知道这是一个接口

  • 常见项目bean配置文件:
app-bean.xml:
<?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: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.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <mvc:annotation-driven/><!--这句必须要,搭配component-scan-->
    <context:component-scan base-package="com.test"/><!--class的注解扫描,扫描后将有Spring注解的类注册到spring-->
</beans>

dispatch-bean.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>
  • web.xml做如下配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:app-bean.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatch-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:dispatch-bean.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatch-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

到这里,spring配置环境就OK了,接下来需要搭建运行环境

  • 搭建本地环境步骤略过~~~

运行一次试试:报错了~~哈哈哈

org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class java.util.HashMap
    org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:234)
    org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:181)
    org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:123)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  • 翻译一下:找不到类型为java.util.HashMap的返回值的转换器

意思就是HashMap不知道以什么类型返回给接口调用者,加上Jackson就OK了!

  • pom.xml 增加Jackson的dependence ,再次运行,没毛病了~
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.9.3</version>
</dependency>

相关文章

网友评论

    本文标题:SpringMVC SSM框架笔记一:从零开始创建Web接口项目

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