zoukankan      html  css  js  c++  java
  • SpringMVC配置及使用

    SpringMVC基本配置

      SpringMVC是基本请求响应模式的框架。

      在项目中集成SpringMVC框架首先需要导入相关的jar包,所需包具体如下:

      commons-dbcp.jar
      commons-fileupload-1.2.2.jar
      commons-io-2.0.1.jar
      commons-logging-1.1.1.jar
      jackson-annotations-2.2.3.jar
      jackson-core-2.2.3.jar
      jackson-databind-2.2.3.jar
      spring-aop-4.1.6.RELEASE.jar
      spring-beans-4.1.6.RELEASE.jar
      spring-context-4.1.6.RELEASE.jar
      spring-context-support-4.2.3.RELEASE.jar
      spring-core-4.1.6.RELEASE.jar
      spring-expression-4.1.6.RELEASE.jar
      spring-jdbc-4.2.3.RELEASE.jar
      spring-tx-4.1.6.RELEASE.jar
      spring-web-4.1.6.RELEASE.jar
      spring-webmvc-4.1.6.RELEASE.jar

      在导入相关jar包之后需要配置web.xml文件与SpringMVC相关联,完整web.xml文件如下:

    <?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <display-name>springMVC</display-name>
      <servlet>
          <servlet-name>demo</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:mvc.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>demo</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

      在web.xml中关于springMVC的两个标签是<servlet></servlet>和<servlet-mapping></servlet-mapping>

      这两个标签的第一个子标签<servlet-name>要互相对应保持一致

      <servlet>标签的子标签<servlet-class>指定路由的处理类

      <servlet-mapping>标签的子标签<url-pattern>指定被拦截的路由模式,上面的配置表示系统中所有以.do结尾的请求都交给org.springframework.web.servlet.DispatcherServlet来进行处理

      <servlet>标签的子标签<init-param>表示参数的配置,<init-param>的子标签<param-name>设置为contextConfigLocation,<param-value>标签表示contextConfigLocation的值,其值classpath:mvc.xml表示路径是在src目录下的mvc.xml,mvc.xml表示具体的关于springMVC应用的配置,如果不进行<init-param>的配置则springMVC的具体的配置文件要指定为[name]-servlet.xml,[name]表示<servlet-name>的值

      <load-on-value>表示项目启动则配置生效

      在web.xml配置完成之后需要对springMVC.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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd 
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <value>text/html; charset=UTF-8</value>
                                <value>application/json;charset=UTF-8</value>
                            </list>
                        </property>
                    </bean>
                    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <value>text/html; charset=UTF-8</value>
                                <value>application/json;charset=UTF-8</value>
                            </list>
                        </property>
                    </bean>
                </list>
            </property>
        </bean>    
        <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
             <property name="prefix" value="/WEB-INF/pages/"/>
         </bean>
        <context:component-scan base-package="com.wx.controller"/>
    </beans>

       beans里面的第一个bean表示开启注解扫描

      beans里面的第二个bean表示注解映射器

      beans里面的第三个bean表示注解适配器,主要实现了返回一个json数据的功能。第二和第三的要有绑定关系,要么全写,要么全不写

      beans里面的第四个bean表示视图解析器,里面的<property name=prefix value="/WEB-INF/pages"/>表示对返回的视图添加前缀,与之对应的就是添加后缀,使用方式为<property name="sufix" value=".jsp">,例如controller类中一个方法return "demo",则最终的结果为/WEB-INF/pages/demo.jsp

      最后一行表示配置文件对com.wx.controller下的所有java文件起作用(扫描里面的注解)

      至此完成了一个最简单的springMVC的配置。

    代码实现

      在springMVC的配置文件中我们指明了监控com.wx.controller包内的所有文件的注解,我们在该包内新建一个DemoController.java文件,最终其内容如下:

    package com.wx.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    public class DemoController {
        @RequestMapping("/demo/html.do")
        public String toHtml(){
            return "html.html";
        }
        @RequestMapping("/demo/jsp.do")
        public String toJSP(){
            return "jsp.jsp";
        }
    }

      在WEB-INF下的pages文件中新建html.html和jsp.jsp文件

      运行项目在地址输入/demo/html.do可以跳转到html.html页面,输入/demo/jsp.do可以跳转到jsp.jsp页面

    SpringMVC处理json数据格式的数据

      我们在客户端已发出如下的请求:

        $(function(){
            var data = {
                name:"zt",
                age:23
            }
            $.ajax({
                url:"http://zt:8088/springmvc-demo/demo/send.do",
                type:"post",
                data:JSON.stringify(data),
                contentType:"application/json; charset=utf-8"
            }).done(function(data){
                console.log(data);
            }).fail(function(){
                console.error("server error");
            })

       在服务端的controller类中添加对应的处理方法:

        @RequestMapping("/demo/send.do")
        @ResponseBody
        public List<Person> send(@RequestBody User user){
            System.out.println("client send age:"+user.getAge()); 
            System.out.println("client send name:"+user.getName()); 
            List<Person> list = new ArrayList<Person>();
            Person p1 = new Person("张三",23);
            Person p2 = new Person("李四",22);
            list.add(p1);
            list.add(p2);
            return list;
        }

      @ResponseBody表示返回的是数据不再是页面不再需要视图解析器的处理

      User是一个实体类用来接收从客户端发送过来的数据,前面要用@RequestBody来进行修饰

      此时客户端也可以正确的接收到服务端返回的JSON数据:[{"name":"张三","age":23},{"name":"李四","age":22}]

  • 相关阅读:
    Javascript定义类(class)的三种方法
    npm命令ionic安装失败cordova安装失败解决方法
    解决类似 Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)的问题
    log_format为Nginx设置日志格式
    Nginx设置日志分割方法
    java和h5 canvas德州扑克开发中(二)
    java和h5 canvas德州扑克开发中(一)
    使用Reaver破解开启了WPS功能的wifi密码(wpa/wpa2)
    在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)
    创建假的wifi热点
  • 原文地址:https://www.cnblogs.com/shinhwazt/p/6284277.html
Copyright © 2011-2022 走看看