1. 程式人生 > >solr測試專案(上)--基於maven的springmvc環境搭建

solr測試專案(上)--基於maven的springmvc環境搭建

從去年9月21開始寫部落格,今天整一年了。

從開始寫文章到現在,寫過spring的,springmvc的,spring與其他框架整合的(包括hibernate,ehcache,shiro),寫過一些工具類,寫過微信公眾號開發,寫過前端的一些小demo,雖然一直在用mybatis卻一直沒寫。

今天寫一個比較全面的測試專案,包括maven,spring,springmvc,solr,mongodb的,一是強哥安排的Solr任務,二是學習與整理。

這篇文章更像是一個詳細的基於maven的springmvc環境搭建

Solr測試專案

maven建立javaee開發環境

mvn archetype:generate -DgroupId=com.gwc -DartifactId=learn -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=internal

建立過程中需要確認版本和報名,輸入回車,屬於Y即可

這裡寫圖片描述

參考

建立好之後結構如下

這裡寫圖片描述

預設的webapp版本為2.3。

這裡寫圖片描述

web.xml

<!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>Archetype Created Web Application</display-name>
</web-app
>

如果想換更高的版本可以直接修改web.xml這裡我使用3.0

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"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID"
version="3.0">
</web-app>

參考

建立好之後我們匯入到eclipse中

匯入專案並修改

File->Import->Maven->Existing Maven Projects

這裡寫圖片描述

這裡寫圖片描述

新匯入的專案有個報錯

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

這裡寫圖片描述

該報錯是由於沒有引入jsp和servlet的依賴而導致的

引入依賴,因為後面會用jstl,所以一併引入

<!-- servlet -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <scope>provided</scope>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

引入之後專案報錯就消失了。

命名行建立的maven專案中並沒有為我們建立相應的java和test目錄(我的電腦上一直不建立,不知道為什麼,如果已經建立了就不需要再建立)

這裡寫圖片描述

在src下新建一個test目錄,test目錄和main目錄在一級
在main下面新建java目錄,在test下新建java目錄
建好目錄之後專案看著有點怪怪的。

這裡寫圖片描述

我們在專案了上右鍵->Refresh

這裡寫圖片描述

專案結構就好了。

這裡寫圖片描述

參考

spring環境配置與相關依賴配置

專案結構配置好之後我們開始配置spring和其他依賴

spring

由於spring模組很多,這裡採用spring官方文件推薦的BOM統一管理spring的版本。引入spring-framework-bom只有後面所有依賴的spring都無需指明版本,和spring-framework-bom 一個版本。

BOM

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.2.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

spring依賴

<!-- spring依賴 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
</dependency>
<!-- spring依賴的第三方 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

單元測試

自動生成的junit版本有點低。

改為如下(當前為4.12版)
為了整合spring進行測試引入spring-test

<!-- 單元測試 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<!-- 整合spring測試 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <scope>test</scope>
</dependency>

日誌記錄,json和傳送http請求

<!-- 日誌記錄 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.21</version>
</dependency>
<!-- json需要 -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20160810</version>
</dependency>
<!-- 傳送http請求 -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.5.2</version>
</dependency>

依賴配置之後我們匯入配置檔案

日誌log4j.properties

放在src/main/resources目錄下

#------------------------------------------------------------------------------------
# 日誌輸出級別
#------------------------------------------------------------------------------------
log4j.rootLogger=info, stdout, info_log, error_log

#------------------------------------------------------------------------------------
# 輸出到控制檯
#------------------------------------------------------------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %p [%M] %c %L %m%n
#log4j.appender.stdout.layout=org.apache.log4j.TTCCLayout

#------------------------------------------------------------------------------------
# info_log
#------------------------------------------------------------------------------------
log4j.appender.info_log=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info_log.File=/usr/logs/learn/info.log
log4j.appender.info_log.Append=true
log4j.appender.info_log.Threshold=INFO
log4j.appender.info_log.layout=org.apache.log4j.PatternLayout
log4j.appender.info_log.DatePattern='.'yyyy-MM-dd
log4j.appender.info_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %p [%M] %c %L %m%n

#------------------------------------------------------------------------------------
# error_log
#------------------------------------------------------------------------------------
log4j.appender.error_log=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error_log.File=/usr/logs/learn/error.log
log4j.appender.error_log.Append=true
log4j.appender.error_log.Threshold=ERROR
log4j.appender.error_log.layout=org.apache.log4j.PatternLayout
log4j.appender.error_log.DatePattern='.'yyyy-MM-dd
log4j.appender.error_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %p [%M] %c %L %m%n

#------------------------------------------------------------------------------------
# 我的配置
#------------------------------------------------------------------------------------
log4j.logger.org.springframework=info

測試一下日誌

package test;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloTest {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Test
    public void test() {
        logger.info("info:{}", "info");
        logger.error("error:{}", "error");
    }

}

執行之後我們發現日誌已經生效

這裡寫圖片描述

並且error會單獨輸出到error.log

來配置spring

首先在src/main/resources目錄下建立一個spring的目錄,該目錄中存放各種spring的配置,總體結構如下

這裡寫圖片描述

先把專案的包結構建立起來

com.gwc.learn.controller放conttroller
com.gwc.learn.service放service
com.gwc.learn.dao放dao
com.gwc.learn.timer放定時任務
com.gwc.learn.util放一些工具類

先建一個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: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/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>

    <!-- 只掃描Controller,不掃描Service -->
    <context:component-scan base-package="com.gwc.learn">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Service" />
    </context:component-scan>
    <!-- 靜態資源 -->
    <mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources>
    <!-- jsp檢視解析器 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

再建一個spring-core.xml這個配置檔案主要是匯入一些其他的spring配置,比如資料庫,定時任務,主要是為了將spring的配置分開,暫時沒有匯入,後面配置mongo資料在匯入

<?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:tx="http://www.springframework.org/schema/tx"
    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">

    <context:component-scan base-package="com.gwc.learn" />

</beans>

然後配置web.xml

這裡有一個上下文的spring-core.xml,其他配置都會被import進來,這樣當配置檔案比較大的時候看著清晰,配置起來方便。

<display-name>solr測試專案</display-name>
<!-- 載入spring上下文 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/spring-core.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 統一編碼 -->
<filter>
    <filter-name>charsetEncoding</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>charsetEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- SpringMVC的配置 -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

寫一個controller和jsp檢視
com.gwc.learn.controller包下的HelloController.java

package com.gwc.learn.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/solr")
public class HelloController {

    @RequestMapping(value="/hello",method=RequestMethod.GET)
    public String hello(Model model){
        model.addAttribute("msg", "你好springMVC");
        return "hello";
    }
}

WEB-INF/views下的hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我是標題</title>
</head>
<body>
${msg }
</body>
</html>

好了,釋出到tomcat

這裡寫圖片描述

Springmvc環境搭建完畢。

參考

再寫就有點長了,下一篇寫整合mongodb和solrj

參考文獻

相關推薦

solr測試專案--基於maven的springmvc環境搭建

從去年9月21開始寫部落格,今天整一年了。 從開始寫文章到現在,寫過spring的,springmvc的,spring與其他框架整合的(包括hibernate,ehcache,shiro),寫過一些工具類,寫過微信公眾號開發,寫過前端的一些小demo,雖然一直

十個例子,教你用統計學方法高效完成機器學習專案【楚才國科】

統計學和機器學習是兩個聯絡特別緊密的領域 事實上,這兩者的界限有時候非常模糊。然而有一些明顯屬於統計學領域的方法,不僅可用於機器學習的專案,並且極具價值。公平地說,需要統計學方法來有效地完成機器學習預測建模專案。 一、問題架構: 這包括了問題型別的選擇,例如是迴歸還是分類,也許

在雲伺服器部署專案

1、 購買騰訊雲主機 首先我們先了解一下雲伺服器的概念: 雲伺服器:        高效能高穩定的雲虛擬機器,可在雲中提供彈性可調節的計算容量,不讓計算能束縛您的想象;您可以輕鬆購買自定義配置的機型,在幾分鐘內獲取到新伺服器,並根據您的需要使用映象進行快速的擴容。

python新手敲打飛機大作戰專案

程式碼已經標註前後順序,感覺還算比較詳細, res/引入的圖片素材,大家可以自行百度或對接自己的素材,希望對大家有所幫助! import pygame import sys import pygame.locals IMG_BACKGROUND="res/img_bg_level_2

25個GitHub最受歡迎的趣味機器學習專案

在過去的幾年裡,機器學習開闢了廣泛行業的新視野,出現了先進的用例:面部識別—Facebook的面部識別,Netflix的電影推薦,PrimaAI的影象樣式轉換,Siri的語音識別,Google Allo的自然語言處理等等。 除了這些用例外,還有大量在GitHub上託管的開源機器學習專案。 以下是

簡歷專案基於稀疏表示的多動症疾病分類

專案背景:給定的多動症疾病資料,利用稀疏表示進行特徵空間分離,實現對患病和正常人的分類測試,通過分類準確率量化演算法的效能。 專案難點:對患病和非患病的資料進行特徵空間分離時,會存在誤分類,即會出現假正例,假反例,也就是會把患病的分到不患病的特徵裡面。 專案

Hive 集算器 Impala效能對比測試報告

目的   對比Hive、集算器、Impala這三種大資料解決方案在分組彙總和關聯計算時的效能差異。 硬體環境   PC數量:4   CPU:Intel Core i5 2500(4核)   RAM:16G   HDD:2T/7200rpm   Ethern

從零開始搭建個人網站6nginx+uWSGI部署Django專案

  Django雖然自帶一個Server,但只能作為開發時測試使用,我們需要一個可以穩定而持續的伺服器對網站進行部署,比如Apache, Nginx, lighttpd等,本篇將利用nginx和uWSGI部署Django網站專案。 前言 n

Azure Devops/TFS測試管理

因為最近測試人員合併到我這邊開發組,對於如何能更好管理測試流程和測試與開發能更高效的完成任務,通俗的說如何能更敏捷,深入思考,然後就開始琢磨起TFS(也稱之為VSTS/Azure Devops,因為我這邊還是用著TFS2018還未升級,下文都稱之為TFS)   本篇文章分上下 上 主要更多說在測試流

搭建ELK日誌分析平臺—— ELK介紹及搭建 Elasticsearch 分散式叢集

轉:http://blog.51cto.com/zero01/2079879 筆記內容:搭建ELK日誌分析平臺(上)—— ELK介紹及搭建 Elasticsearch 分散式叢集筆記日期:2018-03-02 27.1 ELK介紹 27.2 ELK安裝準備工作 27.3 安

搭建eclipse+tomcat+maven+shiro+springmvc+jpa專案:基本框架搭建

1、pom.xml配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m

Linux鞏固記錄1 J2EE開發環境搭建及網絡配置

version 環境 com sco 由於 lin spa node 開發環境 由於要近期使用hadoop等進行相關任務執行,操作linux時候就多了 以前只在linux上配置J2EE項目執行環境,無非配置下jdk,部署tomcat,再通過docker或者jenkins自動

vue 開發系列 vue 開發環境搭建

更新 AC .org 開發環境搭建 執行命令 taobao AR reg 開發技術 概要 目前前端開發技術越來越像後臺開發了,有一站式的解決方案。 1.JS包的依賴管理像MAVEN。 2.JS代碼編譯打包。 3.組件式的開發。 vue 是一個前端的一站式的前

Flask框架的學習與實戰:開發環境搭建

進行 read 模型 clas tar pychar html itl .html Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2。很多功能的實現都參考了django框架。由於項

Hadoop-0.20.2原始碼學習2——原始碼學習環境搭建

參考: JeffreyZhou的部落格園 《Hadoop權威指南》第四版 0 本文前提 在上一篇文章中,通過啟動指令碼xxx.sh檔案的探索,對hadoop的原始碼有了一個初步的認識,發現最終都是執行

Java開發學習心得:SSM環境搭建

Java開發學習心得(一):SSM環境搭建 有一點.NET的開發基礎,在學校學過基礎語法,對JAVA有點興趣,就簡單學習了一下,記錄一下從哪些方面入手的,暫時不打算深入到原理方面,先簡單搭下環境看看,所以有些地方可能講得不慎準確。 1 SSM框架 從網上的討論來看,SSM框架似乎正在慢慢被Spring

購物平臺搭建筆記 linux相關環境搭建

1.認識 Dubbox (registry -- zookeeper 註冊中心) 節點角色說明:  Provider: 暴露服務的服務提供方。  Consumer: 呼叫遠端服務的服務消費方。  Registry: 服務註冊與發現的註冊中心。  Monitor: 統

【web框架】【 Cloud-Admin學習筆記】【環境搭建

Cloud-Admin是目前比較流行的基於Spring Cloud的web框架. 碼雲下載地址: https://gitee.com/minull/ace-security 1、用git也可直接下載,(也可直接下載解壓安裝)   2、用idea開啟專案 file-

分享知識-快樂自己:Liunx-大資料Hadoop初始化環境搭建

大資料初始化環境搭建: 一):大資料(hadoop)初始化環境搭建 二):大資料(hadoop)環境搭建 三):執行wordcount案例 四):揭祕HDFS 五):揭祕MapReduce 六):揭祕HBase 七):HBase程式設計 ----------------------------

golang2:beego 環境搭建

1,關於beego beego是一個用Go開發的應用框架,思路來自於tornado,路由設計來源於sinatra,支援如下特性 MVC,REST,智慧路由,日誌除錯,配置管理,模板自動渲染,layout設計 中介軟體插入邏輯,方便的JSON/XML