Maven+Postgresql+SpringMVC+MyBatis+AngularJS+Bootstrap环境搭建

来源:互联网 发布:林若宁 知乎 编辑:程序博客网 时间:2024/06/06 02:28

最近学习AngularJS的使用,网上搜了一圈后,折腾了半天解决bug后,成功使用AngularJS整合Springmvc、Spring、Mybatis搭建了一个开发环境。


第一步:创建一Maven项目

1.file--new--Maven-Project 


2.Next--选择maven-archetype-quickstart 1.1双击下一步(Next)


3. 填写完后点击Finish,生成项目。


4.项目名(Demo)右键--Properties--Java Build Path 修改JDK为1.8,然后点击apply。

项目名(Demo)右键--Properties-- Java Compiler  Compiler compliance level 选择 1.8.

项目名(Demo)右键--Properties--Project Facets进行设置,先点黄色地方的further configuration avaliable ,

修改 Content root : /    content directory: /webapp


设置完点击Apple,在点击OK完成。


5.项目名(Demo)右键--Properties--Resource设置编码为UTF-8防止乱码报错。

6.项目名(Demo)右键Properties--Deployment Assembly

7.项目名(Demo)右键Properties--Java Build Path Source修改classes保存路径


第二步 配置文件

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>org.ph</groupId>  <artifactId>demo</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>demo</name>  <url>http://maven.apache.org</url>  <properties>    <!-- spring版本号 -->    <spring.version>4.1.7.RELEASE</spring.version>    <!-- mybatis版本号 -->    <mybatis.version>3.2.6</mybatis.version>    <!-- log4j日志文件管理包版本 -->    <slf4j.version>1.7.7</slf4j.version>    <log4j.version>1.2.17</log4j.version>    <servlet.version>3.1.0</servlet.version></properties><dependencies><!-- servlet -->    <dependency>           <groupId>javax.servlet</groupId>           <artifactId>javax.servlet-api</artifactId>           <version>${servlet.version}</version>           <scope>provided</scope>    </dependency>        <dependency>    <groupId>org.aspectj</groupId>    <artifactId>aspectjweaver</artifactId>    <version>1.7.4</version></dependency><dependency>    <groupId>commons-pool</groupId>    <artifactId>commons-pool</artifactId>    <version>1.6</version></dependency><dependency>   <groupId>com.fasterxml.jackson.core</groupId>   <artifactId>jackson-core</artifactId>   <version>2.5.1</version></dependency><dependency>   <groupId>com.fasterxml.jackson.core</groupId>   <artifactId>jackson-databind</artifactId>   <version>2.5.1</version></dependency><!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --><dependency>    <groupId>org.postgresql</groupId>    <artifactId>postgresql</artifactId>    <version>42.0.0</version></dependency><!-- 上传 下载 start --><dependency>    <groupId>commons-fileupload</groupId>    <artifactId>commons-fileupload</artifactId>    <version>1.3.2</version></dependency><dependency>    <groupId>commons-io</groupId>    <artifactId>commons-io</artifactId>    <version>2.5</version></dependency><!-- 上传 下载 end -->    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.11</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-web</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-oxm</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-jdbc</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-aop</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context-support</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-test</artifactId>        <version>${spring.version}</version>    </dependency>    <!-- mybatis核心包 -->    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis</artifactId>        <version>${mybatis.version}</version>    </dependency>    <!-- mybatis/spring包 -->    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis-spring</artifactId>        <version>1.2.2</version>    </dependency>    <!-- 导入java ee jar 包 -->    <dependency>        <groupId>javax</groupId>        <artifactId>javaee-api</artifactId>        <version>7.0</version>    </dependency>    <!-- 导入Mysql数据库链接jar包 -->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.30</version>    </dependency>    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->    <dependency>        <groupId>commons-dbcp</groupId>        <artifactId>commons-dbcp</artifactId>        <version>1.2.2</version>    </dependency>    <!-- JSTL标签类 -->    <dependency>        <groupId>jstl</groupId>        <artifactId>jstl</artifactId>        <version>1.2</version>    </dependency>    <!-- 日志文件管理包 -->    <!-- log start -->    <dependency>        <groupId>log4j</groupId>        <artifactId>log4j</artifactId>        <version>${log4j.version}</version>    </dependency>    <!-- 格式化对象,方便输出日志 -->    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.1.41</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>${slf4j.version}</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>${slf4j.version}</version>    </dependency>    <!-- log end -->    <!-- 映入JSON -->    <dependency>        <groupId>org.codehaus.jackson</groupId>        <artifactId>jackson-mapper-asl</artifactId>        <version>1.9.13</version>    </dependency>    <!-- 上传组件包 -->    <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.4</version>    </dependency>    <dependency>        <groupId>commons-codec</groupId>        <artifactId>commons-codec</artifactId>        <version>1.9</version>    </dependency></dependencies><build>    <finalName>app</finalName>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.5.1</version>            <configuration>                <source>1.8</source>                <target>1.8</target>                <encoding>UTF-8</encoding>            </configuration>        </plugin>    </plugins></build></project>

web.xml


<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="3.1">  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>    classpath:spring/springmvc-servlet.xml,    classpath:spring/spring-mybatis.xml,    classpath:spring/spring-datasource.xml    </param-value>  </context-param>  <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>  </filter>  <filter-mapping>    <filter-name>CharacterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <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/springmvc-servlet.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>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>


spring-datasource.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:aop="http://www.springframework.org/schema/aop"    xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd" default-autowire="byName" default-lazy-init="false">               <!-- 引入配置文件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /><property name="fileEncoding">        <value>UTF-8</value>      </property></bean><!-- 配置数据源   dbcp数据库连接池 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    <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></beans>

spring-mybatis.xml


<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"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:p="http://www.springframework.org/schema/p"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/aop        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"        default-autowire="byName" default-lazy-init="false">                                <!-- 通过与Spring集成,由Spring容器管理创建  所需jar包  mybatis-3.0.6.jar  mybatis-spring-1.0.2.jar --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 -->    <property name="dataSource" ref="dataSource"/><!-- 自动扫描mapping.xml文件 -->        <property name="mapperLocations" value="classpath:com/ph/mapper/*.xml"></property>    </bean><!-- 声明式事务 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">    <!-- 指定的 DataSource 一般可以是你使用 Spring 的任意 JDBC DataSource。这包含了连接 池和通过 JNDI 查找获得的 DataSource。  要注意, 为事务管理器指定的 DataSource 必须和用来创建 SqlSessionFactoryBean 的 是同一个数据源,否则事务管理器就无法工作了。 -->    <property name="dataSource" ref="dataSource"/>    </bean><!-- 配置事务的传播特性  所需jar包  aopaliance-1.0.jar  -->    <tx:advice id="txAdvice" transaction-manager="transactionManager">            <tx:attributes>                    <!-- REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。  SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。  MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。  REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。  NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。  NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。  NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。    -->    <tx:method name="add*" propagation="REQUIRED"/>            <tx:method name="save*" propagation="REQUIRED"/>            <tx:method name="insert*" propagation="REQUIRED"/>            <tx:method name="update*" propagation="REQUIRED"/>            <tx:method name="del*" propagation="REQUIRED"/>            <tx:method name="delete*" propagation="REQUIRED"/>            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>                    </tx:attributes>            </tx:advice>        <!-- 那些类的哪些方法参与事务  所需jar包 aspectjweaver.jar  -->    <aop:config>        <aop:pointcut id="txPointcut" expression="execution(* com.ph.service..*.*(..))" />            <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" />            </aop:config></beans>

springmvc-servlet.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-3.0.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-3.0.xsd        http://www.springframework.org/schema/mvc        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。 -->    <!-- <context:annotation-config /> --><!-- 包含了自动注入上述processor的功能 --><context:component-scan base-package="com.ph.controller" /><context:component-scan base-package="com.ph.service" /><context:component-scan base-package="com.ph.dao"/><!-- 如果没有<mvc:annotation-driven/>,那么所有的Controller可能就没有解析,所有当有请求时候都没有匹配的处理请求类,  就都去<mvc:default-servlet-handler/>即default servlet处理了。添加上<mvc:annotation-driven/>后,相应的do请求被Controller处理,  而静态资源因为没有相应的Controller就会被default servlet处理。总之没有相应的Controller就会被default servlet处理就ok了。 -->    <mvc:annotation-driven/>           <!-- 我希望静态资源由WEB服务器默认的Servlet来处理,所以我在配置文件中添加了如下的语句 -->    <mvc:default-servlet-handler />      <!-- 在spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。  那么在Spring MVC中是如何选择合适的View呢?View对象是是如何创建的呢?答案就在ViewResolver中,ViewResolver接口定义了resolverViewName方法,  根据viewName创建合适类型的View实现。 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".html"></property></bean><!-- 这个标签用于注册一个自定义拦截器或者是WebRequestInterceptors. --><mvc:interceptors>    <!-- 直接定义拦截所有请求 -->    <bean class="com.ph.interceptor.IdentityInterceptor"></bean>            <!-- 拦截所有路径的请求   包括子路径             <mvc:mapping path="/**"/>             <bean class="com.wxisme.ssm.interceptor.IdentityInterceptor"></bean>         -->    </mvc:interceptors>        <!-- 定义全局异常处理器 -->    <!-- 只有一个全局异常处理器起作用 -->    <bean id="exceptionResolver" class="com.ph.service.exception.CustomException"></bean>        <!--配置上传文件数据解析器  -->    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">     <!-- 上传文件大小上限,单位为字节(10MB) -->        <property name="maxUploadSize">            <value>9242880</value>        </property>        <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->        <property name="defaultEncoding">            <value>UTF-8</value>        </property>    </bean>        <!-- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring -->      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">          <property name="basePackage" value="com.ph.dao"></property>          <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>                <!-- 有注解就不用配置 -->        <!-- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>  -->     </bean>          <!-- 返回json数据类型 -->     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"        p:ignoreDefaultModelOnRedirect="true" >            <property name="messageConverters">                <list>                    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>                </list>            </property>        </bean></beans>


jdbc.properties


jdbc.driver=org.postgresql.Driverjdbc.url=jdbc:postgresql://localhost:5432/postgresjdbc.username=postgresjdbc.password=peter

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>        <!-- 别名 -->      <!-- <typeAliases>          <typeAlias type="com.feizi.model.User" alias="user"/>      </typeAliases>   -->      <!-- 配置sql映射文件 -->      <mappers>              <mapper resource="com/ph/mapper/UserMapper.xml"/>      </mappers>          </configuration>  

目录结构

1 0