详解

先说一说常识性的东西,我们的JavaWeb程序运行一开始走的是web.xml文件,这是我们的核心文件,可以说没有web.xml文件我们就无法运行项目,这个文件长什么样子,读者自己新建一个web项目就行了。

web.xml

  • <display-name>项目名</display-name>

  • 正常情况下我们会配置一些过滤器 filter,过滤器的意思就是在执行某件事件前先进行规范处理之后才能继续运行。我们常见的过滤器有编码过滤器、数据安全过滤器。下面贴一个公用的编码过滤器

    1. <!-- 编码过滤 UTF-8 -->
    2. <filter>
    3. <filter-name>CharacterEncodingFilter</filter-name>
    4. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    5. <init-param>
    6. <param-name>encoding</param-name>
    7. <param-value>utf-8</param-value>
    8. </init-param>
    9. </filter>
    10. <filter-mapping>
    11. <filter-name>CharacterEncodingFilter</filter-name>
    12. <url-pattern>/*</url-pattern>
    13. </filter-mapping>
  • 下面就是设置一些浏览器的读取问题,我们用浏览器打开文件的时候会发现如果是doc文件, 会用记事本打开,出现乱码, 但是如果在web.xml里面配置了类型,浏览器就会根据配置的类型自动调用相应的程序打开

    在 WEB.XML 配置常用文件类型

    1. <mime-mapping>
    2. <extension>doc</extension>
    3. <mime-type>application/vnd.ms-word</mime-type>
    4. </mime-mapping>
    5. <mime-mapping>
    6. <extension>gif</extension>
    7. <mime-type>image/gif</mime-type>
    8. </mime-mapping>
    9. <mime-mapping>
    10. <extension>htm</extension>
    11. <mime-type>text/html</mime-type>
    12. </mime-mapping>
    13. <mime-mapping>
    14. <extension>html</extension>
    15. <mime-type>text/html</mime-type>
    16. </mime-mapping>
    17. <mime-mapping>
    18. <extension>jnlp</extension>
    19. <mime-type>application/x-java-jnlp-file</mime-type>
    20. </mime-mapping>
    21. <mime-mapping>
    22. <extension>jpeg</extension>
    23. <mime-type>image/jpeg</mime-type>
    24. </mime-mapping>
    25. <mime-mapping>
    26. <extension>jpg</extension>
    27. <mime-type>image/jpeg</mime-type>
    28. </mime-mapping>
    29. <mime-mapping>
    30. <extension>js</extension>
    31. <mime-type>application/x-javascript</mime-type>
    32. </mime-mapping>
    33. <mime-mapping>
    34. <extension>pdf</extension>
    35. <mime-type>application/pdf</mime-type>
    36. </mime-mapping>
    37. <mime-mapping>
    38. <extension>png</extension>
    39. <mime-type>image/png</mime-type>
    40. </mime-mapping>
    41. <mime-mapping>
    42. <extension>rar</extension>
    43. <mime-type>application/x-rar-compressed</mime-type>
    44. </mime-mapping>
    45. <mime-mapping>
    46. <extension>txt</extension>
    47. <mime-type>text/plain</mime-type>
    48. </mime-mapping>
    49. <mime-mapping>
    50. <extension>xls</extension>
    51. <mime-type>application/vnd.ms-excel</mime-type>
    52. </mime-mapping>
    53. <mime-mapping>
    54. <extension>xml</extension>
    55. <mime-type>text/xml</mime-type>
    56. </mime-mapping>
    57. <mime-mapping>
    58. <extension>xul</extension>
    59. <mime-type>application/vnd.mozilla.xul-xml</mime-type>
    60. </mime-mapping>
    61. <mime-mapping>
    62. <extension>zhtml</extension>
    63. <mime-type>text/html</mime-type>
    64. </mime-mapping>
    65. <mime-mapping>
    66. <extension>zip</extension>
    67. <mime-type>application/x-zip</mime-type>
    68. </mime-mapping>
    69. <mime-mapping>
    70. <extension>zul</extension>
    71. <mime-type>text/html</mime-type>
    72. </mime-mapping>
  • 这些事辅助配置,这些配置完了,下面我们就是配置框架的事情了,框架说白了就是servlet,所以我们就需要引用servlet来进行配置框架。 我们通过context-param 去加载spring配置文件



    <!-- 加载spring配置文件 -->

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

    </context-param>

    <!-- 监听器 加载spring配置文件 -->

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

  • 加载配置文件后我们就剩下去启动框架了

    1. <servlet>
    2. <servlet-name>springmvc</servlet-name>
    3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    4. <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
    5. <init-param>
    6. <param-name>contextConfigLocation</param-name>
    7. <param-value>/WEB-INF/spring-servlet.xml</param-value>&nbsp; 默认
    8. </init-param>
    9. 也可以像下面一样进行自定义位置和名称
    10. -->
    11. <init-param>
    12. <param-name>contextConfigLocation</param-name>
    13. <param-value>classpath:config/springmvc.xml</param-value>
    14. </init-param>
    15. <!--
    16. <load-on-startup>1</load-on-startup>里面正数越低启动优先级越高,但是里面是负数或者不填的时候,表明容器在该servlet被选择是采取加载
    17. -->
    18. </servlet>
    19. <servlet-mapping>
    20. <servlet-name>springmvc</servlet-name>
    21. <url-pattern>*.action</url-pattern>
    22. </servlet-mapping>
  • 整个框架就配置好了,在web.xml文件中我们在配置一些错误界面,就会让整个系统变得更加的人性化。

    • 根据错误编码跳转
  1. <error-page>
  2. <error-code>403</error-code>
  3. <location>/change/error_go.action</location>
  4. </error-page>
  1. - 根据错误类型跳转
  1. <!-- 这样的配置表示如果jsp页面或者servlet发生java.lang.Exception类型(当然包含子类)的异常就会转到500.jsp页面处理。 -->
  2. <error-page>
  3. <exception-type>java.lang.Exception</exception-type>
  4. <location>/change/error_go.action</location>
  5. </error-page>
  • 最后就是系统的欢迎页
  1. <welcome-file-list>
  2. <welcome-file>change/login_go.action</welcome-file>
  3. </welcome-file-list>

application.xml配置文件

  • 启动注解配置

  1. <!-- 启动注解配置 -->
  2. <context:component-scan base-package="tm.change">
  3. <context:exclude-filter type="annotation"
  4. expression="org.springframework.stereotype.Controller" />
  5. </context:component-scan>
  • 配置数据源
  1. <!-- 配置C3P0数据源 -->
  2. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  3. destroy-method="close">
  4. <property name="driverClass" value="${c3p0.driverClass}"></property>
  5. <property name="jdbcUrl" value="${c3p0.url}"></property>
  6. <property name="user" value="${c3p0.user}"></property>
  7. <property name="password" value="${c3p0.password}"></property>
  8. </bean>
  9. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  10. <!-- 数据库连接池 -->
  11. <property name="dataSource" ref="dataSource" />
  12. <!-- 加载mybatis的全局配置文件 -->
  13. <property name="configLocation" value="classpath:config/mybatis-config.xml" />
  14. </bean>

当然用之前需要引入数据库的配置





这个说白了就是properties文件,里面放置了数据连接的信息

  • 然后就要处理mybatis的mapper接口(可以看成是dao层的处理)
  1. <!-- 配置扫描mapper接口的处理 -->
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  3. <property name="basePackage" value="tm.change.dao"/>
  4. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  5. </bean>
  • 事务处理(可以看成是service层)

    • 注册一个事务
    1. <!-- 配置事务操作 -->
    2. <bean id="myTxManager"
    3. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    4. <property name="dataSource" ref="dataSource" />
    5. </bean>
    • 配置事务的通知(指定哪些方法会有事务管理)
    1. <!-- 事务的advisor -->
    2. <tx:advice id="txAdvice" transaction-manager="myTxManager">
    3. <tx:attributes>
    4. <!-- propagation事务传播行为 -->
    5. <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" />
    6. <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" />
    7. <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" />
    8. <tx:method name="*" propagation="SUPPORTS" read-only="true" />
    9. </tx:attributes>
    10. </tx:advice>
    • 切入点(在哪个里面具有事务)
    1. <!--aop实现 业务层 -->
    2. <aop:config>
    3. <aop:pointcut expression="execution(* tm.change.service..*(..))"
    4. id="txPointcut" />
    5. <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
    6. </aop:config>
    7. <context:annotation-config />

上述的事务是在service层上insert*,update*,delete*等这些方法具有事务

  • controller层(springmvc.xml文件)

    • 配置视图解析器
    1. <!-- 配置视图解析器 -->
    2. <bean
    3. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    4. <!-- 前缀 -->
    5. <property name="prefix" value="/WEB-INF/" />
    6. <!-- 后缀 -->
    7. <property name="suffix" value=".jsp" />
    8. </bean>
    • 设置上传文件的视图解析器
    1. <!-- 上传文件的视图解析器 -->
    2. <bean id="multipartResolver"
    3. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    4. <property name="maxUploadSize" value="20971520" />
    5. </bean>
    • 配置拦截器,可以直接定义拦截所有请求,也可以自定义拦截路径
    1. <mvc:interceptors>
    2. <!-- 直接定义拦截所有请求 -->
    3. <bean class="com.wxisme.ssm.interceptor.IdentityInterceptor"></bean>
    4. <!-- <mvc:interceptor>
    5. 拦截所有路径的请求 包括子路径
    6. <mvc:mapping path="/**"/>
    7. <bean class="com.wxisme.ssm.interceptor.IdentityInterceptor"></bean>
    8. </mvc:interceptor> -->
    9. </mvc:interceptors>
    • 配置一些绑定如日期邦迪
    1. <!-- 自定义参数类型绑定 -->
    2. <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    3. <property name="converters">
    4. <list>
    5. <!-- 日期类型绑定 -->
    6. <bean class="com.wxisme.ssm.controller.converter.DateConverter"/>
    7. </list>
    8. </property>
    9. </bean>
    • 静态资源不加载问题的解决方法:

    在web.xml文件中如何启动spring是设置拦截的url是如下的,那么只有以.action的请求会被拦截处理,一些静态资源不会被拦截,这种情况是正常的,但是有的人会设置springmvc的拦截地址是拦截任何地址,那么这个时候的静态资源也就会被拦截。这个时候我们系统就会因加载不到静态资源而无法显示界面

    1. <servlet-mapping>
    2. <servlet-name>springmvc</servlet-name>
    3. <url-pattern>*.action</url-pattern>
    4. </servlet-mapping>

    遇到上述情况难道我们就没办法解决了吗,有的,看下代码

    1. <!-- 访问静态资源文件 -->
    2. <!-- <mvc:default-servlet-handler/> 需要在web.xml中配置-->
    3. <mvc:resources mapping="/images/**" location="/images/" />
    4. <mvc:resources mapping="/css/**" location="/css/" />
    5. <mvc:resources mapping="/js/**" location="/js/" />
    6. <mvc:resources mapping="/imgdata/**" location="/imgdata/" />

JavaWeb配置详解(结合框架SpringMVC)的更多相关文章

  1. SpringMVC 框架系列之组件概述与配置详解

    在上一篇文章 SpringMVC 框架系列之初识与入门实例 的实例中,我们已经知道,SpringMVC 框架是一个 web 层的框架,本篇文章就详细解释一下 SpringMVC 框架具体文件的配置以及 ...

  2. (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)

    转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...

  3. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  4. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  5. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  6. WebsitePanel(wsp)配置详解(安装指南)

    WebsitePanel(wsp)配置详解(安装指南) 铁卫士原创 估计很多同学都还不知道WebsitePanel是什么东东吧,WebsitePanel简称wsp是微软旗下,开源免费的虚拟主机系统,我 ...

  7. maven常用插件配置详解

    常用插件配置详解Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...

  8. Nginx+Tomcat的服务器端环境配置详解

    这篇文章主要介绍了Nginx+Tomcat的服务器端环境配置详解,包括Nginx与Tomcat的监控开启方法,需要的朋友可以参考下 Nginx+tomcat是目前主流的Javaweb架构,如何让ngi ...

  9. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

随机推荐

  1. web前端css(二)

    一.  标准文档流 标准文档流中会有一些现象: 空白折叠 和 高低不齐边底对齐的现象 标准文档流等级森严, 标签分为两种等级: 行内元素 和 块级元素. 1. 行内元素 和 块级元素的区别: 行内元素 ...

  2. MyBatis 核心配置综述之Executor

    目录 MyBatis四大组件之 Executor执行器 Executor的继承结构 Executor创建过程以及源码分析 Executor接口的主要方法 Executor 的现实抽象 上一篇我们对Sq ...

  3. 数字IC前后端设计中的时序收敛(五)--Max Transition违反的修复方法

    本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...

  4. netty实现的RPC框架

    自己手撸了一个nettyRPC框架,希望在这里给有兴趣的同学们做个参考. 要想实现nettyrpc需要了解的技术要点如下: spring的自定义注解.spring的bean的有关初始化. 反射和动态代 ...

  5. 2. 软件数据流图(DFD)

    数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型. 下图是一个飞机机票预订系统 ...

  6. spring boot admin抛出"status":401,"error":"Unauthorized"异常

    打开spring boot admin的监控平台发现其监控的服务明细打开均抛出异常: Error: {"timestamp":1502749349892,"status& ...

  7. 远程调试出现DEP0600: 部署失败。无法通过新部署管道进行部署错误解决

    昨天我连接树莓派调试没问题,今天来的时候却总是出现DEP0600: 部署失败.无法通过新部署管道进行部署.错误 我怀疑是环境问题,然后发现蓝莓派上面没有远程调试监视器(MSVSMON.EXE)进程,怀 ...

  8. python基础知识三 字典-dict + 菜中菜

    3.7字典:dict+菜中菜 1.简介 ​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联 ​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu': ...

  9. 小白开学Asp.Net Core 《一》

    在开篇中介绍了项目的搭建以及项目中所用到的第三方工具 本篇介绍SqlSugar和Dapper在本项目的实现 一.SqlSugar SqlSuagr的介绍就直接浏览官方网站,官网地址将在底部给出. 在本 ...

  10. Linnux命令大全(vim)

    vim复制和粘贴的基本命令(注:需先退出编辑模式)    yy复制游标所在行整行.或大写一个Y. (常用)    2yy或y2y复制两行. (常用)    y^复制至行首,或y0.不含游标所在处字元. ...