之前一直在做的一個GIS系統項目,採用了jsp+servlet框架,數據傳輸框架採用了apache的thrift框架,短時多傳的風格還不錯,但是較其他的java web項目顯得有點太臃腫了,現在要跟大家介紹一下最近剛研究的輕量級java web框架。
1.首先是建立maven專案
本人開發用的IDE用的是IDEA 2017,Google上這樣評價IDEA:最適合開發java程式的IDE,看到這裡大家就應該知道了。首先新建一個maven程序,如圖
#選擇從archeType創建,在src-》main資料夾下建立java(resource)資料夾,這樣才能在該資料夾下建立java class,同時在java目錄下建立如下四個資料夾,分別代表控制器、資料儲存處理、物件模型、處理服務。
#2.新增maven專案依賴。
pom.xml,各個相依性所對應的模組名稱已註明。
<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 "> <modelVersion>4.0.0</modelVersion> <groupId>ssm_test</groupId> <artifactId>demo1</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>demo1 Maven Webapp</name> <url>;/url> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.1.4.RELEASE</spring.version> <jackson.version>2.5.0</jackson.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!-- 使用SpringMVC需配置 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 关系型数据库整合时需配置 如hibernate jpa等 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.4</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.3</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-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!-- aop --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.4</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <!-- 上传文件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> </dependencies> </project>
3.在service下建立服務介面類別
ITestService.Java
package com.chuyin.service; import com.alibaba.fastjson.JSONObject; /** * Created by Zhang Feiyue on 2017/7/8. */ public interface ITestService { public JSONObject getUsers(JSONObject param); }
4.在service資料夾下建立實作介面方法的類別
TestService.Java
package com.chuyin.service.impl; import com.alibaba.fastjson.JSONObject; import com.chuyin.mapper.TestMapper; import com.chuyin.service.ITestService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.annotation.Resources; import java.util.List; /** * Created by Zhang Feiyue on 2017/7/8. */ @Service public class TestService implements ITestService { @Resource private TestMapper testMapper; @Override public JSONObject getUsers(JSONObject param) { List<JSONObject> userList = testMapper.getUsers(param); JSONObject result = new JSONObject(); result.put("userList", userList); return result; } }
5.在mapper資料夾下建立資料取得介面類別
TestMapper.Java
package com.chuyin.mapper; import com.alibaba.fastjson.JSONObject; import org.springframework.stereotype.Component; import java.util.List; /** * Created by Zhang Feiyue on 2017/7/8. */ @Component public interface TestMapper { public List<JSONObject> getUsers(JSONObject param); }
6.建立控制器實作類別
TestController.Java
package com.chuyin.controller; import com.alibaba.fastjson.JSONObject; import com.chuyin.service.impl.TestService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * Created by Zhang Feiyue on 2017/7/8. */ @RestController @RequestMapping("/test") public class TestController { @Resource private TestService testService; @RequestMapping(value = "/getUser", method = RequestMethod.POST) public JSONObject getUser(@RequestBody JSONObject param) { JSONObject result = testService.getUsers(param); result.put("success", true); return result; } }
7.resources檔案下建立資料夾,並設定TestMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.chuyin.mapper.TestMapper"> <select id="getUsers" parameterType="JSON" resultType="JSON"> <![CDATA[ select * from base_user where username=#{username} ]]> </select> </mapper>
8.建立application.properties文件,設定jdbc
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/chuyin jdbc.username=root jdbc.password=root
9.設定log4j.xml,mybatis-config.xml,spring-common.xml,spring-mvc.xml
#log4j.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Appenders --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p: %c - %m%n"/> </layout> </appender> <appender name="filelog_daily" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${catalina.home}/logs/catalina.log"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p: %c - %m%n"/> </layout> </appender> <appender name="errorlog_daily" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${catalina.home}/logs/error.log"/> <param name="DatePattern" value="'.'yyyy-MM-dd"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p: %c - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!-- 3rdparty Loggers --> <!--<logger name="org.springframework.core"> <level value="info"/> </logger>--> <logger name="java.sql.*"> <level value="info"/> </logger> <!--<logger name="org.springframework.context"> <level value="info"/> </logger>--> <!--<logger name="org.springframework.web"> <level value="info"/> </logger>--> <logger name="org.springframework"> <level value="info"/> <!--<appender-ref ref="bizlog_daily" />--> </logger> <!-- 下面是打印mybatis语句的配置--> <logger name="com.ibatis" additivity="true"> <level value="DEBUG" /> <!--<appender-ref ref="bizlog_daily" />--> </logger> <logger name="java.sql.Connection" additivity="true"> <level value="DEBUG" /> <!--<appender-ref ref="bizlog_daily" />--> </logger> <logger name="java.sql.Statement" additivity="true"> <level value="DEBUG" /> <!--<appender-ref ref="bizlog_daily" />--> </logger> <logger name="java.sql.PreparedStatement" additivity="true"> <level value="info" /> <!--<appender-ref ref="bizlog_daily" />--> </logger> <logger name="java.sql.ResultSet" additivity="true"> <level value="info" /> <!--<appender-ref ref="bizlog_daily" />--> </logger> <!-- Root Logger --> <root> <priority value="DEBUG"/> <appender-ref ref="console"/> <appender-ref ref="filelog_daily"/> <appender-ref ref="errorlog_daily"/> </root> </log4j:configuration>
mybatis-config.xml
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="jdbcTypeForNull" value="NULL"/> <setting name="safeResultHandlerEnabled" value="false"/> </settings> <!-- 实体类,简称 -设置别名 --> <typeAliases> <typeAlias alias="JSON" type="com.alibaba.fastjson.JSONObject"/> </typeAliases> <!-- 实体接口映射资源 --> <plugins> <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"/> </plugin> </plugins> <!-- 说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略,因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml --> <mappers> <mapper resource="com/chuyin/mapper/TestMapper.xml"/> </mappers> </configuration>
spring-common.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/aop http://www.springframework.org/schema/context "> <!-- 注解扫描包 --> <context:component-scan base-package="com.chuyin"></context:component-scan> <bean id="dataSourceMaster" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--<bean id="dataSourceSlave"--> <!--class="org.springframework.jdbc.datasource.DriverManagerDataSource">--> <!--<property name="driverClassName" value="${jdbc.driver}" />--> <!--<property name="url" value="${jdbc.url}" />--> <!--<property name="username" value="${jdbc.username}" />--> <!--<property name="password" value="${jdbc.password}" />--> <!--</bean>--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--<bean id="dataSource" class="com.skytech.datasource.MultiDataSource"> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry key="master" value-ref="dataSourceMaster"/> <!–<entry key="slave1" value-ref="dataSourceSlave"/>–> <!–<entry key="slave2" value-ref="dataSourceSlave2"/>–> </map> </property> <property name="defaultTargetDataSource" ref="dataSourceMaster"/> </bean>--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.chuyin.mapper"></property> <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <!--<bean id="multiDataSourceAspect" class="com.skytech.datasource.DataSourceAspect"> <property name="dataSource" ref="dataSource"/> <property name="masterKey" value="master"/> <property name="slaveKeys"> <array> <value>slave1</value> <value>slave2</value> </array> </property> </bean> <aop:config> <aop:aspect id="c" ref="multiDataSourceAspect"> <aop:pointcut id="tx" expression="execution(* com.skytech.pkdata.mapper.*.*(..))"/> <aop:before pointcut-ref="tx" method="before"/> </aop:aspect> </aop:config>--> </beans>
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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:application.properties</value> </list> </property> <property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="fileEncoding" value="UTF-8"></property> </bean> <!-- 注解扫描包 --> <context:component-scan base-package="com.chuyin"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan> <!-- 开启注解 --> <mvc:annotation-driven/> <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd --> <!--<mvc:resources mapping="/css/**" location="/css/" />--> <!--<mvc:resources mapping="/img/**" location="/img/" />--> <!--<mvc:resources mapping="/js/**" location="/js/" />--> <mvc:resources mapping="/lib/**" location="/lib/"/> <!--<mvc:resources mapping="/jsp/**" location="/jsp/" />--> <!--<mvc:resources mapping="/images/**" location="/images/" />--> <!--<mvc:resources mapping="/html/**" location="/html/" />--> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/html/"/> <property name="suffix" value=".html"/> </bean> </beans>
好了,至此後台已全部配置完畢,看一下效果吧,可以看到資料已經取得成功。
##
以上是maven Spring+Spring MVC+Mybatis+mysql輕量級Java web開發環境搭建的詳細內容。更多資訊請關注PHP中文網其他相關文章!

maven的命令:1.mvncleanpackage-DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包。2.mvnclean:清理项目生产的临时文件,一般是模块下的target目录3.mvncompile-DskipTests:模块安装命令将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用-Dmaven.test.skip=true跳过测试(同时会跳过testcompile).4.mvntest:测试命令,或执行src/test/java/下

Maven本地仓库配置详解,需要具体代码示例在使用Maven进行项目构建时,本地仓库的配置是非常重要的一部分。本文将详细介绍如何正确配置Maven本地仓库,并附带代码示例。Maven本地仓库是用于保存项目中所需的依赖库的地方。当Maven构建项目时,它会根据项目中的pom.xml文件中的依赖配置,自动从远程仓库中下载所需的依赖库,并保存在本地仓库中。这样,当

maven配置本地仓库的步骤:1、下载和安装Maven;2、配置环境变量;3、创建本地仓库文件夹;4、配置Maven的settings.xml文件;5、修改本地仓库位置;6、保存并关闭settings.xml文件;7、测试配置。详细介绍:1、下载和安装Maven,需要在计算机上下载和安装Maven,可以从Maven官网下载最新版本的Maven,根据操作系统选择合适的安装包等等。

maven下载慢的解决办法:1、网络问题;2、代理设置;3、镜像设置;4、清理本地仓库;5、使用Maven的下载管理功能;6、升级Maven版本;7、插件问题;8、清理系统缓存;9、尝试使用其他工具。详细介绍:1、网络问题,检查网络连接是否稳定,如果网络不稳定可能导致下载速度慢,尝试切换到其他网络环境或者使用更稳定的网络连接;2、代理设置,如果网络需要通过代理服务器访问等等。

Springboot2.6集成redismaven报错org.springframework.bootspring-boot-starter-data-redis当加这个配置后,POM.xml的第一行总是报错:DescriptionResourcePathLocationTypeio.lettuce:lettuce-core:jar:6.1.8.RELEASEfailedtotransferfromhttps://repo.maven.apache.org/maven2duringaprevio

maven打包插件有:1、maven-jar-plugin;2、maven-assembly-plugin;3、maven-shade-plugin;4、spring-boot-maven-plugin;5、maven-dependency-plugin;6、maven-resources-plugin;7、maven-compiler-plugin等等。

方式一通过maven-jar-plugin指定outputDirectory输出路径可以排除某些配置文件,没有文件夹的话会自动创建!org.apache.maven.pluginsmaven-jar-pluginD:\test**/*.properties**/*.xml**/*.ymlstatic/**templates/**方式二通过maven-resources-plugin指定outputDirectory输出路径org.apache.maven.pluginsmaven-resourc

在Java开发过程中,Maven是一个非常常用的工具。它可以帮助我们管理依赖、构建项目、运行测试等。然而,有时候我们会遇到Maven错误,这会给我们带来一定的麻烦。本文将介绍一些常见的Maven错误及其解决方法,以及如何避免这些错误的发生。一、依赖错误1.缺少依赖缺少依赖是Maven中最常见的错误之一。这通常是由于依赖配置不正确导致的。在使用Maven时,我


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。