zoukankan      html  css  js  c++  java
  • 从零开始--Spring项目整合(2)整合SpringMVC

    1、pom.xml 定义版本

    <properties>
              <spring.version>4.2.7.RELEASE</spring.version>
            <jackson.version>2.6.7</jackson.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>

    2、pom.xml 添加依赖

    <!-- spring mvc 框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
          
        <!-- servlet -->
        <dependency>
                <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        
        <!-- jsp/jstl/core 页面标签 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        
        <!-- SLF4J API -->
        <!-- SLF4J 是一个日志抽象层,允许你使用任何一个日志系统,并且可以随时切换还不需要动到已经写好的程序 -->
        <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
               <version>1.7.22</version>
        </dependency>
        
        <!-- Log4j 日志系统(最常用) -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.22</version>
        </dependency>
        
        <!-- jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>

    3、修改web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           xmlns:websocket="http://www.springframework.org/schema/websocket"  
          >
    
        <!-- Spring的log4j监听器 -->  
        <listener>  
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
        </listener>
        
        <!-- 字符集 过滤器  -->  
        <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-mapping>  
            <filter-name>CharacterEncodingFilter</filter-name>  
            <url-pattern>/*</url-pattern>  
        </filter-mapping>
        
        
        
        <!-- Spring view分发器 -->  
        <servlet>  
            <servlet-name>dispatcher</servlet-name>  
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
            <init-param>  
                <param-name>contextConfigLocation</param-name>  
                <param-value>/WEB-INF/classes/spring/dispatcher-servlet.xml</param-value>  
            </init-param>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
        <servlet-mapping>  
            <servlet-name>dispatcher</servlet-name>  
            <url-pattern>/</url-pattern>  
        </servlet-mapping>  
        
        <listener>  
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
          </listener>  
          <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath*:spring/*.xml</param-value>  
          </context-param>
    
    </web-app>

    4、在resources源码包内新建spring文件夹,专门存放spring的配置文件

    5、把新建dispatcher-servlet.xml ,内容如下,放入spring文件夹内

    <?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:websocket="http://www.springframework.org/schema/websocket" 
        xmlns:tx="http://www.springframework.org/schema/tx" 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/context 
           http://www.springframework.org/schema/context/spring-context.xsd 
           http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx.xsd
              http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd">
    
        <!-- 配置扫描的包 -->
        <context:component-scan base-package="com.*" />
    
        <!-- 注册HandlerMapper、HandlerAdapter两个映射类 -->
        <mvc:annotation-driven />
    
        <!-- 访问静态资源 -->
        <mvc:default-servlet-handler />
        
        <!-- 视图解析器 -->
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
        
        
        
            
    </beans>

    6、新建 log4j.properties 日志配置文件,放入resources源码包内

    # Priorities are: DEBUG, INFO, WARN, ERROR, or FATAL.
    log4j.rootCategory=INFO, CONSOLE, FILE
    logs.dir=${catalina.base}/logs/springdemo/
    logs.filename=logs
    fileBufferSize=20480
    #log to File
    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.FILE.File=${webapp.root}/logs/test.log
    log4j.appender.FILE.encoding=UTF-8
    log4j.appender.FILE.Append=true
    log4j.appender.FILE.LocationInfo=true
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d(%r) --> %l: %m %x %n
    log4j.appender.FILE.bufferSize=${fileBufferSize}
    # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Threshold=DEBUG
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n

    7、新建一个LoggerController,测试SpringMVC的访问

    package com.jiafuwei.spring.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class LoggerController{
        final Logger logger = LoggerFactory.getLogger(getClass());
        
        @RequestMapping("/logger")
        public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    
             resp.getWriter().println("test logger");
             
             logger.info("这是一条日志信息 - {}", "jiafuwei");
        }
    }

    8、启动项目,并进行访问 http://localhost:8080/spring-mvc-web/logger

    页面得到结果:

     控制台打印:

    根据配置文件的设置,日志存放地址为项目发布路径下,logs的文件夹内

    至此,SpringMVC搭建成功

    我们再测试SpringMVC对 restful api 的支持

    新建User.java对象

    package com.jiafuwei.spring.controller;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.jiafuwei.spring.po.User;
    
    
    
    @Controller
    @RequestMapping("/user")
    public class RESTfulJSONController {
    
        //访问路径 http://localhost:8080/spring-mvc-web/user/view/jiafuwei
        /**Spring MVC RESTful JSON**/
        @RequestMapping(value = "/view/{username}", method = RequestMethod.GET)
        @ResponseBody
        public User view(@PathVariable String username){
            User user = new User();
            user.setAge(10);
            user.setEmail("jiafuwei@qq.com");
            user.setPassword("123");
            user.setUsername(username);
            System.out.println("view username:"+username);
    
            return user;
        }
    
        //访问路径  http://localhost:8080/spring-mvc-web//user/query?username=jiahaha
        @RequestMapping(value = "/query", method = RequestMethod.GET)
        @ResponseBody
        public User query(@RequestParam(value="username", required=true) String username){
            User user = new User();
            user.setAge(10);
            user.setEmail("jiafuwei@qq.com");
            user.setPassword("123");
            user.setUsername(username);
            System.out.println("view username:"+username);
    
            return user;
        }
    
      
        //访问路径  http://localhost:8080/spring-mvc-web/user/list
        @RequestMapping(value = "/list", method = RequestMethod.GET)
        public @ResponseBody
        List<User> listPerson(@RequestParam(value = "username", required = false, defaultValue = "") String name) {
    
            User user = new User();
            user.setAge(10);
            user.setEmail("jiafuwei@qq.com");
            user.setPassword("123");
            user.setUsername("haha");
            
            User user2 = new User();
            user2.setAge(50);
            user2.setEmail("tyew@qq.com");
            user2.setPassword("frekkk");
            user2.setUsername("zheshi");
            
            List<User> listUser = new ArrayList<User>();
            listUser.add(user);
            listUser.add(user2);
            
    
            return listUser;
        }
        
    }

    通过访问,直接把User对象转换为json格式

     项目地址 https://github.com/jiafuweiJava/spring-integration

  • 相关阅读:
    关于putty使用详解
    ORA12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
    VMware的“Bridge”、“NAT”、“Hostonly”上网方式的区别
    转贴一个很全的sql用法
    网站
    sql exsits问题!!
    petshop4.0 profile
    一些应该知道的
    继承System.Web.UI.Page的页面基类
    应用程序域(Application Domain)
  • 原文地址:https://www.cnblogs.com/jiafuwei/p/6480616.html
Copyright © 2011-2022 走看看