Jimmy小站

小明也有大梦想 — 蒋明/铭
当前位置:网站首页 / Spring MVC / 正文

Maven+SpringMVC + Hibernate web 的项目创建

2016-04-12 / Spring MVC / 25333 次围观 / 0 次吐槽
  1. 新建工程

    选择maven project

    blob.png

    勾选Create a simple project

blob.png

    填入Group Id 以及 Artifact Id,packing 选择 war 包,然后点击Finish

blob.png


新建的项目,目录结构如下图。你会看到一个大大的红叉在pom.xml 上面 是因为缺少web.xml配置文件,除了web项目必须的web.xml之外,接下来我们要写一堆的配置文件 使得项目支持SpringMVC以及Hibernate

    blob.png

    在 webapp文件夹下新建三个文件夹

blob.png

    三个文件夹如下图,分别为 resources、views、WEB-INF 。resources一般放置 js css 以及图片资源等,views放置页面(html jsp文件),WEB-INF下面我继续介绍

    blob.png

    在 WEB-INF 文件夹下面新建两个xml文件(springmvc-servlet.xml 与 web.xml)和 一个lib文件夹。

    lib文件夹用于放置web项目依赖的jar包,是web项目的标准配置,不过我们使用maven管理依赖,就不需要用到该文件夹。但最好还是加上。

    加入web.xml之后 会发现 pom.xml文件上的红叉消失了

    springmvc-servlet.xml 是 SpringMVC配置文件的默认名称,如果需要修改可以在web.xml中自定义。这里就做默认处理好了

    blob.png

    在 src/main/resources中新建几个文件(hibernate.cfg.xml hibernate.reveng.xml log4j.properties)

    hibernate.cgf.xml 与hibernate.reveng.xml 也可以使用 Hibernate Tools反向工程自动创建,详细请查看我的另一篇博文Hibernate tools 反向工程

    blob.png

    下面列出所有配置文件的参考

  1. web.xml (web项目的必须配置)

<?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">
	
	<welcome-file-list>
		<welcome-file>/views/index.jsp</welcome-file>
		<welcome-file>/views/index.html</welcome-file>
	</welcome-file-list>
	
	<!-- 设置文字编码过滤器为utf-8 防止中文乱码 -->
	<!-- 此处只是设置后端传递参数编码,jsp页面还要在页面申明编码方式 -->
	<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>
	
	<display-name>springmvc01</display-name>
	
	<!-- 配置分派 SpringMVC来处理请求 ,默认  配置文件是 springmvc-servlet.xml-->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<!-- 此处设置解决 返回 HTML 类型页面时出现404问题 -->
	<!-- <servlet-mapping>
		<servlet-name>jsp</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>  -->
	
</web-app>

2. pom.xml (maven项目依赖控制 的配置文件 需要的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MarvinShop</groupId>
  <artifactId>ShopSite</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  	<name>Shop</name>
	<url>http://maven.apache.org</url>
	
	<properties>
		<commons-lang.version>2.6</commons-lang.version>
		<slf4j.version>1.7.6</slf4j.version>
		<spring.version>4.1.3.RELEASE</spring.version>
		<hibernate.version>5.1.0.Final</hibernate.version>
		<jackson.version>2.5.0</jackson.version>
	</properties>
	
	
	<dependencyManagement>
		<dependencies>
			<!-- spring 相关依赖  -->
			<dependency>
	            <groupId>org.springframework</groupId>
	            <artifactId>spring-framework-bom</artifactId>
	            <version>${spring.version}</version>
	            <!-- version在前面properties中有定义 -->
	            <type>pom</type>
	            <scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<dependencies>
	
	    <!-- junit单元测试	-->
	    <dependency>
	        <groupId>junit</groupId>
	        <artifactId>junit</artifactId>
	        <version>3.8.1</version>
	        <scope>test</scope>
	    </dependency>
	
		<!-- servlet -->
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>3.1.0</version>
		    <!-- 只在编译 测试时运行 当部署好以后 环境中会有servlet api的 仅开发环境需要-->
		    <scope>provided</scope>
		</dependency>
	
		<!-- spring mvc -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-webmvc</artifactId>
		    <!-- version在前面properties中有定义 -->
		    <type>jar</type>
		</dependency>
	
		<!-- slf4j 控制台debug -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-log4j12</artifactId>
		    <version>${slf4j.version}</version>
		    <!-- version在前面properties中有定义 -->
		</dependency>
	
		<!-- log4j -->
		<dependency>
		    <groupId>log4j</groupId>
		    <artifactId>log4j</artifactId>
		    <version>1.2.17</version>
		</dependency>
	
		<!-- mysql连接 -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>5.1.34</version>
		</dependency>
		
		<!-- hibernate依赖 -->
		<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-core</artifactId>
		    <version>${hibernate.version}</version>
		</dependency>
		
		<!-- hibernate 缓存依赖(可选) -->
		<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-ehcache</artifactId>
		    <version>${hibernate.version}</version>
		</dependency>
		
		<!-- jackson : xml/json 与Java对象之间转换 -->
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>2.5.3</version>
		</dependency>
		
		<!-- 文件上传  -->
		<dependency>
		    <groupId>commons-fileupload</groupId>
		    <artifactId>commons-fileupload</artifactId>
		    <version>1.2.2</version>
		</dependency>
		
		<!-- send mail plug-in -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.5.0-b01</version>
		</dependency>
	
		<!-- 全文分词检索 工具-->
		<dependency>
		    <groupId>org.apache.lucene</groupId>
		    <artifactId>lucene-core</artifactId>
		    <version>5.5.0</version>
		</dependency>
	
	</dependencies>
  
	<build>
		<plugins>
  			<plugin>
	  			<artifactId>maven-war-plugin</artifactId>
	  			<configuration>
	  				<version>3.0</version>
	  			</configuration>
	  		</plugin>
	  		
	  		<plugin>
		        <groupId>org.apache.maven.plugins</groupId>  
		        <artifactId>maven-compiler-plugin</artifactId>  
		        <version>2.3.2</version>  
		        <configuration>  
		            <source>1.6</source>  
		            <target>1.6</target>  
		        </configuration>  
		    </plugin>
	  		
	  		<plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>8.1.16.v20140903</version>
                <!-- 在package 动作之后执行jetty的run命令 -->
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
	  	</plugins>
	</build>
  
</project>

3. springmvc-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:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.1.xsd ">
	
	<!-- spring mvc注解驱动 -->
	<mvc:annotation-driven/>
	<!-- 静态资源处理	如css/js/img -->
	<mvc:resources location="/resources/" mapping="/resources/**"/>
	
	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/**"/>
			<mvc:exclude-mapping path="/login"/>
			<mvc:exclude-mapping path="/dolog"/>
			<mvc:exclude-mapping path="/resources/**"/>
			<bean class="net.jimmyme.controller.AccessInterceptor" />
		</mvc:interceptor>
		
		<mvc:interceptor>
			<mvc:mapping path="/admin/**"/>
			<mvc:exclude-mapping path="/login"/>
			<mvc:exclude-mapping path="/dolog"/>
			<mvc:exclude-mapping path="/resources/**"/>
			<bean class="net.jimmyme.controller.AdminInterceptor" />
		</mvc:interceptor>
		
	</mvc:interceptors>
	<!-- 扫描器 -->
	<context:component-scan base-package="net.jimmyme.controller" />

	<!-- 配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		
		<!-- 多个viewResolver的优先次序 -->
		<property name="order" value="1" />
		<!-- 前缀 -->
		<property name="prefix" value="/views/" />
		<!-- 后缀 -->
		<property name="suffix" value=".jsp" />
		
	</bean>
	
	<!-- support file upload -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="utf-8"></property>   
        <property name="maxUploadSize" value="10485760"></property>  
        <property name="maxInMemorySize" value="40960"></property>
	</bean>
	
</beans>

4. hibernate 连接数据库的配置文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">19940125</property>
        <property name="hibernate.connection.url">jdbc:mysql://114.215.153.154:3306/shopdb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- <property name="hibernate.search.autoregister_listeners">false</property>
        <property name="hibernate.validator.apply_to_ddl">false</property> -->
        
        <property name="show_sql">true</property>
		<!-- 格式化显示SQL语句 -->
		<property name="format_sql">true</property>

		<!-- default create table in database if not exist -->
		<property name="hbm2ddl.auto">update</property>
        
        <mapping resource="net/jimmyme/model/Producttable.hbm.xml" />
        <mapping resource="net/jimmyme/model/Shoprecords.hbm.xml" />
        <mapping resource="net/jimmyme/model/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>

5. hibernate.reveng.xml (反向工程配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
  <table-filter match-catalog="shopdb" match-name="producttable"/>
  <table-filter match-catalog="shopdb" match-name="shoprecords"/>
  <table-filter match-catalog="shopdb" match-name="user"/>
</hibernate-reverse-engineering>

6. log4j.properties (生成项目运行时 产生的日志报告)

##################### Set Log Levels 定义输出级别和输出平台 (FATAL>ERROR>WARN>INFO>DEBUG) 
log4j.rootLogger=DEBUG,consoleOut,rollingFileOut
#log4j.rootLogger=INFO,consoleOut,fileOut,rollingFileOut
#log4j.rootLogger=WARN,consoleOut,fileOut,rollingFileOut

###################### Console Appender out 输出到控制台  
log4j.appender.consoleOut=org.apache.log4j.ConsoleAppender
log4j.appender.consoleOut.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleOut.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %-10C{1}  %m%n

###################### fileOut 输出到日志文件,每天产生一个文件
log4j.appender.fileOut=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.fileOut.Append=true
##日志路径
log4j.appender.fileOut.File=logs/myDemo.log
##今天之前的日志名:mydemo_yyyy-MM-dd.log 如mydemo_2013_07_04.log
log4j.appender.fileOut.DatePattern='.'yyyy-MM-dd'.log' 
log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout
log4j.appender.fileOut.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %-10C{1}  %m%n

###################### rollingFileOut 输出到日志文件,文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.rollingFileOut=org.apache.log4j.RollingFileAppender 
##日志路径
log4j.appender.rollingFileOut.File=logs/myDemo.log
log4j.appender.rollingFileOut.Append=true
##单个文件大小
log4j.appender.rollingFileOut.MaxFileSize=2MB
##最大日志文件个数
log4j.appender.rollingFileOut.MaxBackupIndex=50
log4j.appender.rollingFileOut.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFileOut.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p %-10C{1}  %m%n


推荐您阅读更多有关于“hibernateSpringMVCmavenJavaEE,”的文章

[一个Java程序猿的转型之路,读研深造,专注机器学习推荐算法]
本站所有文章如无特别注明均为原创。作者:吉米酱 ,复制或转载请以超链接形式注明转自 Jimmy小站
原文地址《Maven+SpringMVC + Hibernate web 的项目创建
额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996