從零開始新建一個Maven 、springMVC工程

 

相關代碼:http://pan.baidu.com/s/1jIBUr1Ghtml

目標: 新建一個名爲testSpringMvc的spring MVC工程,maven管理jar包;java

一、新建maven管理的web工程web

  eclipse : new project ---> maven project ajax

     

      ---> nextspring

  

  ---> next:sql

  

  ---> next:數據庫

  

  Group Id:通常填寫包名前綴,公司包名,大項目包名apache

  Artifact Id:通常填寫項目包名json

  GroupID 和Artifact ID共同組成代碼的包路徑。api

 

  --->  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目錄啓動工程測試

  沒有問題進行下一步。

 

二、給工程添加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的配置完成,接下來編寫代碼測試

三、測試工程

  在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獲取數據等方法

相關文章
相關標籤/搜索