• 从零开始新建一个Maven 、springMVC工程


    相关代码:http://pan.baidu.com/s/1jIBUr1G

    目标: 新建一个名为testSpringMvc的spring MVC工程,maven管理jar包;

    1、新建maven管理的web工程

      eclipse : new project ---> maven project 

         

          ---> next

      

      ---> next:

      

      ---> next:

      

      Group Id:一般填写包名前缀,公司包名,大项目包名

      Artifact Id:一般填写项目包名

      GroupID 和Artifact ID共同组成代码的包路径。

      --->  finish:

      结束后目录结构如下: 

      

      工程新建后报错(jar包依赖环境不同,可能有些会报错有些不会):

      

      修改pom加上相关依赖解决错误:

      

       

    <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
    </dependency>

      run as ----> maven install 测试一下啊有没有编译报错。

      run as ---->run on server 运行工程看看有没有报错,或者run install后运行tomcat 指定工程目录为target/testSpringMVC目录启动工程测试

      没有问题进行下一步。

    2、给工程添加spring MVC

     2.1  添加spring MVC相关jar包:

      

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.xw</groupId>
      <artifactId>textAna</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>textAna Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <!-- 属性:spring 版本 -->
      <properties>
          <springVersion>3.2.5.RELEASE</springVersion>
      </properties>
      <dependencies>
        ......
        <!--spring MVC相关jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${springVersion}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${springVersion}</version>
        </dependency>
        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${springVersion}</version>
        </dependency>
        ......
      </dependencies>
    </project>

      2.2 修改web.xml 添加spring MVC支持

      

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
          <display-name>Spring MVC Test</display-name>
          <!-- 配置spring 配置文件路径 -->
          <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:config/spring/spring-*.xml</param-value>
          </context-param>
        <!-- java beans 内存泄漏监听类,防止内存泄漏 -->
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!--  核心配置:spring MVC DispatcherServlet -->
          <servlet>
             <servlet-name>spring-mvc</servlet-name>
             <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
             <init-param>
                 <param-name>contextConfigLocation</param-name>
                 <param-value>classpath:config/spring/spring-mvc.xml</param-value>
             </init-param>
        </servlet>
    
        <servlet-mapping>
             <servlet-name>spring-mvc</servlet-name>
            <url-pattern>/</url-pattern>
         </servlet-mapping>
         
         <!-- 过滤器,解决页面参数传递时中文乱码问题 -->
        <filter>
            <filter-name>encoding</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>
        </filter>
        <filter-mapping>
            <filter-name>encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>

    添加后发现报错如下:

       实测删除1~3行的格式校验声明错误消失,且工程运行没有问题。

      2.3  配置spring mvc配置文件

      如下图,新建config/spring/spring-mvc.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"
        xmlns:util="http://www.springframework.org/schema/util" 
        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/util 
           http://www.springframework.org/schema/util/spring-util-3.0.xsd 
           http://www.springframework.org/schema/mvc 
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
          ">

       <!-- 开启注解扫描功能,指定扫描的包名,不配置注解无效 --> <context:component-scan base-package="com.sunline.*" /> <!-- 配置读取外部配置文件 --> <context:property-placeholder location="classpath:config.properties" /> <!-- 数据源参数配置,使用c3p0包提供的数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 此行语句使得resource autowired 等四个注解可以使用 --> <context:annotation-config /> <!-- 实例化jdbcTemplate,同时注入数据源 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource" /> <!-- 配置事务管理器 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 避免返回中文乱码问题 --> <mvc:annotation-driven > <!-- 消息转换器 --> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven> </beans>

       从上面的配置看出,我们还需要如下几个配置:

        -- classpath:config.properties 即WEB-INF/config.properties,由于是maven工程,可以将该文件放到src/main/resources目录下即可,工程编译运行时会自动拷贝到target的WEB-INF中:

        config.properties:

      ps:因为公司项目上使用的是星环的数据库,所以配置的driverClass、url、username、password等都如下,其他项目请根据实际情况设置,只要能获得数据就算成功。

    #jdbc config
    jdbc.driverClass=org.apache.hive.jdbc.HiveDriver
    jdbc.username=easuser
    jdbc.password=Eas@20170417
    #DAT
    jdbc.url=jdbc:hive2://10.80.2.102:10000,10.80.2.103:10000/easdb

      --  因为工程使用到json 和c3p0包,pom.xml需要添加如下配置:

    <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
    </dependency>
    <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
    </dependency>

      至此,spring MVC的配置完成,接下来编写代码测试

    3、测试工程

      在src/main 下面新建com.sunline.testSpringMvc.controller、com.sunline.testSpringMvc.service、com.sunline.testSpringMvc.dao  三个包,分别在包中新建TestController.java、TestService.java、TestDao.java文件。新建后如下图:

      

      TestController.java:

    package com.sunline.testSpingMvc.controller;
    
    import javax.servlet.http.HttpServletRequest;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import com.sunline.testSpingMvc.service.TestService;
    
    @Controller
    @RequestMapping("/Test")
    public class TestController {
        @Autowired
        TestService testService;
        
        @RequestMapping("/getResult")
        @ResponseBody
        public String getResult(String userId,HttpServletRequest request){
            String result = "";
            result = testService.getResult(userId);
            return result;
        }
    }

      TestService.java:

      

    package com.sunline.testSpingMvc.service;
    
    import java.util.List;
    import java.util.Map;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.sunline.testSpingMvc.dao.TestDao;
    import net.sf.json.JSONArray;
    @Service("TestService")
    public class TestService {
        @Autowired
        TestDao testDao;
        
        /**
         * 取数据、业务处理逻辑
         * @param batchId
         * @return 结果字符串
         */
        public String getResult(String userId) {
            //取数据
            List<Map<String, Object>> list= testDao.getResult(userId);
            //处理数据逻辑,此处直接返回为jsonarray对象字符串
            return JSONArray.fromObject(list).toString();
        }
    }

      TestDao.java:

    package com.sunline.testSpingMvc.dao;
    
    import java.util.List;
    import java.util.Map;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
    
    @Repository("TextAnaDao")
    public class TestDao {
        @Autowired  //spring管理bean
        private JdbcTemplate jdbcTemplate;
        
        public JdbcTemplate getJdbcTemplate() {
            return jdbcTemplate;
        }
        public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
            this.jdbcTemplate = jdbcTemplate;
        }
        /**
         * 从eas_text_ana_file表获取数据
         * @param userId
         * @return 
         */
        public List<Map<String, Object>> getResult(String userId) {
            String sql = "select * from eas_text_ana_file";
            return this.jdbcTemplate.queryForList(sql);
        }
    }

      运行工程,浏览器输入:http://localhost:8080/testSpringMvc/test/getResult  回车,浏览器页面成功得到数据表记录返回的json字符串。表示成功。

     PS: 实际测试请修改相关的数据库配置,以实际使用的数据库为准。

      既然是web工程,当然也可以编写页面来访问后台获取数据,如使用ajax请求访问http://localhost:8080/testSpringMvc/test/getResult获取数据等方法

  • 相关阅读:
    mac sourceTree 每次操作提示需要密码
    docker-compose.yml开机启动
    详解Oracle 21c 中的只读Oracle主⽬录特性 (ROOH)
    使用kubeadm一键部署kubernetes集群
    Ubuntu18.04 开机自启动(需要 sudo 权限)
    nginx加载vue3 打包后的静态文件
    使用Docker搭建Nextcloud SSL站点
    Docker+Selenium+TestNG+Maven+Jenkins环境搭建
    Windows Server 2016安装AD并开启SSL
    Centos 环境配置内网 Yum 源
  • 原文地址:https://www.cnblogs.com/parker-yu/p/7228201.html
Copyright © 2020-2023  润新知