Web 后端配置文件详解

pom.xml 配置:

详解: https://www.cnblogs.com/Nick-Hu/p/7288198.html


 /**modelVersion:pom文件的模型版本
  **关于group id和artifact id,为了便于多人多模块协同开发管理(以后会讲),建议使用以下命名规范
  **group id:com.公司名.项目名
  **artifact id:功能模块名
  **packaging:项目打包的后缀,war是web项目发布用的,默认为jar
  **version:     artifact模块的版本,说白了就是你的项目版本号
  **group id + artifact id +version :项目在仓库中的坐标
  **
  **<name>name>
  **
  **<url>url>
**/


  <modelVersion>4.0.0modelVersion>

  
  <groupId>反写的公司网址+项目名groupId>
  <artifactId>项目名+模块名artifactId>
  
  <version>0.0.1SNAPSHOTversion>
  
  <packaging>packaging>
  
  <name>name>
  
  <url>url>
  
  <description>description>
  
  <developers>developers>
  
  <licenses>licenses>
  
  <organization>organization>


/**dependency:引入资源jar包到本地仓库,要引入更多资源就在<dependencies>中继续增加<dependency>
    **group id+artifact id+version:资源jar包在仓库中的坐标
    **scope:作用范围。
**/

  
  <dependencies>
      
      <dependency>
          <groupId>junitgroupId>
          <artifactId>junitartifactId>
          <version>4.10version>
          <type>type>
          
          <scope>testscope>
          
          <optional>falseoptional>
          
          <exclusions>
              
              <exclusion>exclusion>
          exclusions>
      dependency>
  dependencies>


/**build:项目构建时的配置
    **finalName:在浏览器中的访问路径,如果将它改成helloworld,再执行maven--update,
    **这时运行项目的访问路径是http://localhost:8080/helloworld/ 
    **而不是项目名的  http://localhost:8080/test
    **plugins:插件
    **group id+artifact id+version:插件在仓库中的坐标
**/

  <build>
    <finalName>mmallfinalName>
    <plugins>
      <plugin>
        <groupId>org.mybatis.generatorgroupId>
        <artifactId>mybatis-generator-maven-pluginartifactId>
        <version>1.3.2version>
        <configuration>
          <verbose>trueverbose>
          <overwrite>trueoverwrite>
        configuration>
      plugin>

      
      <plugin>
        <groupId>org.apache.maven.pluginsgroupId>
        <artifactId>maven-compiler-pluginartifactId>
        <configuration>
          <source>1.7source>
          <target>1.7target>
          <encoding>UTF-8encoding>
          <compilerArguments>
            <extdirs>${project.basedir}/src/main/webapp/WEB-INF/libextdirs>
          compilerArguments>
        configuration>
      plugin>
    plugins>

  build>

web.xml配置详解:

//xml的版本和编码格式


/**
  * This is the XML Schema for the Servlet 2.5 deployment descriptor.
  * The deployment descriptor must be named "WEB-INF/web.xml" in the
  * web application's war file.  All Servlet deployment descriptors
  * must indicate the web application schema by using the Java EE
  * namespace:
  *
  * http://java.sun.com/xml/ns/javaee
  *
  * and by indicating the version of the schema by
  * using the version element as shown below:

  *     <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  *       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  *       xsi:schemaLocation="..."
  *       version="2.5">
          ...
  *     web-app>

  * The instance documents may indicate the published version of
  * the schema using the xsi:schemaLocation attribute for Java EE
  * namespace with the following location:

**/
<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_2_5.xsd"
         id="WebApp_ID" version="2.5">


    
    <icon>icon>

     
    <display-name>display-name>

    
    <description>description>

     
    <context-param>context-param>

    /**
    * Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,
    * 主要的用途是过滤字符编码、做一些业务逻辑判断等。
    * 其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,
    * 此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;
    * 它是随你的web应用启动而启动的,只初始化一次,
    * 以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁.
    * Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
    **/
    <filter>
        <filter-name>characterEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>characterEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    
    <listener>listener>

    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>
            classpath:applicationContext.xml
        param-value>
    context-param>


    
    <servlet>
        <servlet-name>dispatcherservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <load-on-startup>1load-on-startup>
    servlet>

    <servlet-mapping>
        <servlet-name>dispatcherservlet-name>
        <url-pattern>*.dourl-pattern>
    servlet-mapping>

applicationContext.xml配置详解:

/**
 *表示启动spring的组件扫描功能(从spring2.5版本开始)。
 *即扫描base-package包或者子包下面的Java文件,
 *如果扫描到有@controller、@Service、@Repository、@Component等注解的java类,
 *就会将这些bean注册到工厂中。还可以使用分号来分隔多个扫描包。 
**/

/**如果在配置文件中配置了<context:component-scan />,
 *就不用在配置<context:annotation-config/>,
 *因为前者已经包含了后者。
 *<context:annotation-config/>的作用是向spring容器注入AutowiredAnnotationBeanPostProcessor、
 *CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 
 *及RequiredAnnotationBeanPostProcessor 四个beanPostProcessor。从而使得@Autowired等注解生效。
**/
<context:component-scan base-package=""/>

Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明。
启用对@AspectJ的支持:Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置:
配置代码如下:
<aop:aspectj-autoproxy/>  


    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="2"/>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
            <list>
                <value>classpath:datasource.propertiesvalue>
            list>
        property>
        <property name="fileEncoding" value="utf-8"/>
    bean>


    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${db.driverClassName}"/>
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        
        <property name="initialSize" value="${db.initialSize}"/>
        
        <property name="maxActive" value="${db.maxActive}"/>
        
        <property name="maxIdle" value="${db.maxIdle}"/>
        
        <property name="minIdle" value="${db.minIdle}"/>
        
        <property name="maxWait" value="${db.maxWait}"/>
        
         
        <property name="defaultAutoCommit" value="${db.defaultAutoCommit}"/>
        
         
        
         
        
        <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}"/>

        
        <property name="timeBetweenEvictionRunsMillis" value="40000"/>
        
        <property name="testWhileIdle" value="true"/>
        
        <property name="validationQuery" value="SELECT 1 FROM dual"/>
    bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:mappers/*Mapper.xml">property>

        
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageHelper">
                    <property name="properties">
                        <value>
                            dialect=mysql
                        value>
                    property>
                bean>
            array>
        property>

    bean>

    
    <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.mmall.dao"/>
    bean>

    
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
        <property name="rollbackOnCommitFailure" value="true"/>
    bean>

Mybatis-Generator配置详解:


<generatorConfiguration>
    
    <properties resource="datasource.properties">properties>

    
    <classPathEntry location="${db.driverLocation}"/>

    <context id="default" targetRuntime="MyBatis3">

        
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        commentGenerator>

        
        <jdbcConnection
                driverClass="${db.driverClassName}"
                connectionURL="${db.url}"
                userId="${db.username}"
                password="${db.password}">
        jdbcConnection>


        
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        javaTypeResolver>


        
        
        <javaModelGenerator targetPackage="com.mmall.pojo" targetProject="./src/main/java">
            
            <property name="enableSubPackages" value="false"/>
            
            <property name="constructorBased" value="true"/>
            
            <property name="trimStrings" value="true"/>
            
            <property name="immutable" value="false"/>
        javaModelGenerator>

        
        
        <sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
            <property name="enableSubPackages" value="false"/>
        sqlMapGenerator>

        

        
        
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject="./src/main/java">
            
            <property name="enableSubPackages" value="false" />
        javaClientGenerator>


        
        <table tableName="mmall_shipping" domainObjectName="Shipping" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_cart" domainObjectName="Cart" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_cart_item" domainObjectName="CartItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_order" domainObjectName="Order" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_order_item" domainObjectName="OrderItem" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_pay_info" domainObjectName="PayInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>
        <table tableName="mmall_product" domainObjectName="Product" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
            <columnOverride column="detail" jdbcType="VARCHAR" />
            <columnOverride column="sub_images" jdbcType="VARCHAR" />
        table>
        <table tableName="mmall_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">table>


        
    context>
generatorConfiguration>

超文本传输协议讲解:

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,
一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头域,请求头域,响应头域和实体头域四个部分。

一.通用头域

1.Cache-Control指定请求和响应遵循的缓存机制。

2.Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
KeepAliveTime 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。

3.Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。

4.Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

二。请求头域

MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,
包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,
其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。
HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。
POST方法可以请求服务器接收包含在请求中的实体信息(实体头),可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
SP表示空格。Request-URI遵循URI格式,在此字段为星号(*)时,
说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。

三。响应头域
HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。Status-Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息

四。实体头域

请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,
实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、
Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,
但是这些域可能无法被接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,
它的长度由Content-Length或Content-Range定义。
1.Content-Type实体头
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型
2.Content-Range实体头
Content-Range实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。
在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),
Content-Range表示传送的范围,Content-Length表示实际传送的字节数。
3.Last-modified实体头
Last-modified实体头指定服务器上保存内容的最后修订时间。
例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),
Content-Range表示传送的范围,Content-Length表示实际传送的字节数。

你可能感兴趣的:(web后端)