如果DispatcherServlet拦截“/”,即拦截了所有的请求,对*.js,*.jpg等静态资源的访问也就被拦截了。但如果DispatcherServlet只拦截*.do这样的URL,就不存在访问不到静态资源的问题。 通过下面几种方式可以正常访问静态文件,不要找不到静态文件报404。 方法一:利用Tomcat的defaultServlet来处理静态文件 在web.xml里添加如下配置 <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.pn 继续阅读 >>


李猛 18/05/04 17:18:12
Spring MVC基于MVC模式(模型(Model)-视图(View)-控制器(Controller))实现,能够帮助你构建像Spring框架那样灵活和松耦合的Web应用程序。 核心类与接口 DispatcherServlet 前置控制器 HandlerMapping 处理器映射 Controller 控制器 ViewResolver 视图解析器 View 视图处理 Spring MVC的请求流向 当用户在浏览器中点击链接或提交表单的时候,就会产生HttpRequest。 请求首先会来到DispatcherServlet,DispatcherServlet会查询一个或多个处理器映射来确定将该请求发给哪一个控制器,根据请求所携带的URL信息来进行决策。如果没有找到合适的控制器,通过defaultHandler返回Response给浏览器。 在对应的控制器中,控制器开始处理请求、创建模型数据并将模型数据打包并标示出用于渲染输出的View名称,接着把模型和视图名发送回Dispatc 继续阅读 >>


李猛 18/04/27 23:12:09
2018年5月1日更新: 多谢楼下小伙伴的提醒,MyCLI确实更强大。 MyCLI 简介 MyCLI 是一个易于使用的命令行客户端,可用于受欢迎的数据库管理系统 MySQL、MariaDB 和 Percona,支持自动补全和语法高亮。它是使用 prompt_toolkit 库写的,需要 Python 2.7、3.3、3.4、3.5 和 3.6 的支持。MyCLI 还支持通过 SSL 安全连接到 MySQL 服务器。 如何在 Linux 上为 MySQL 和 MariaDB 安装 MyCLI 在 Debian/Ubuntu 发行版上,你可以很容易的像下面这样使用 apt 命令 来安装 MyCLI 包: $ sudo apt-get update $ sudo apt-get install mycli 同样,在 Fedora 22+ 上也有 MyCLI 的可用包,你可以像下面这样使用 dnf 命令 来安装它: $ sudo dnf install mycli 对于其他 Lin 继续阅读 >>


李猛 18/04/25 13:21:41
策略模式 定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 OO(Object Oriented)面向对象 基础:抽象、封装、多态、继承 原则: 找出应用中可能需要变化之处,把它们独立出来。 针对接口编程,而不是针对实现编程。 多用组合,少用继承。 观察者模式 定义了对象间的一对多依赖,这样一来,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。 主题(可观察者)用一个共同的接口来更新观察者。 观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口。我们可以独立地复用主题或者观察者,改变主题或者观察者其中一方,不会影响另一方。 可以从被观察者处推(push)或者拉(pull)数据。(推的方式更好) 有多个观察者时,不可以依赖特定的通知次序。 Java有多种观察者模式的实现,包括通用的java.util.Observable,但要注意它是一个类,限制了它的使用和复用。如果有必要,可 继续阅读 >>


李猛 18/04/18 23:21:50
问题引入 我们知道在SQL中,可以用check来来约束字段的范围。 下面这些SQL语句在MySQL下运行(系统环境为deepin 15.5 64位): mysql> CREATE TABLE `Student` ( -> `Sno` char(8) NOT NULL, -> `Sname` varchar(10) NOT NULL, -> `Sex` char(2)NOT NULL DEFAULT '男' CHECK (Sex IN ('男','女')) , -> `Age` tinyint(4) NOT NULL DEFAULT '20' CHECK (Age between 15 and 30), -> `Phonenumber` char(12) DEFAULT NULL, -> `Sdept` varchar(20) NOT NULL, -> PRIMARY 继续阅读 >>


李猛 18/04/12 23:12:35
一、环境与profile 开发环境和QA环境,很多时候需要不同的配置。即在不同的环境中某个bean会有所不同,我们必须用某种方法来配置这个bean,使其在每种环境下都会选择最为合适的配置。其中一种方式是在单独的配置类(或者XML文件)中配置每个bean,然后在构建阶段(可能用到Maven的profiles)确定将哪个配置编译到可部署的应用中。 配置profile bean 利用Spring配置时,需根据环境决定该创建哪个bean和不创建哪个bean,而且Spring是在运行时做出这样的决策。这样的好处是,同一个部署单元能够适用所有的环境,没有必要进行重新构建。 要使用profile,先要将不同的bean定义整理到一个或多个profile之中,再将应用部署到每个环境时,要确保对应的profile处于激活(active)的状态。 在Java配置中,可以用@Profile注解指定某个bean属于哪一个profile。 @Profile(“dev”)该注解应用在类级别上,它会告诉Spring这个配置 继续阅读 >>


李猛 18/04/12 21:40:33
Spring之旅 Spring是一个开源框架,最早由Rod Johnson创建。是为了解决企业级开发的复杂性而创建的,但不仅仅局限与服务器端的开发,任何Java应用都能在简单性、可测试性和松耦合性方面从Spring获益。 为了降低Java开发的复杂性,Spring采用以下4种关键策略: 基于POJO的轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声明式编程; 通过切面和模板减少样板式代码。 注:POJO(Plain Ordinary Java Object) , 简单的Java对象,实际就是普通的JavaBeans。是为了避免和EJB混淆所创造的简称。 Spring成功的关键在于依赖注入和AOP,它们也是Spring框架的核心部分。 DI是组装应用对象的一种方式,借助这种方式对象无需知道依赖来自何处或者依赖的实现方式。对象在运行期赋予它们所依赖的对象,依赖对象通常会通过接口了解所注入的对象,这样的话就能确保低耦合。 AOP可以帮助应用将散落在各处的逻辑 继续阅读 >>


李猛 18/04/08 20:09:01
Problem Description 你想通过交换两个相邻的序列元素来处理一系列n个不同的整数,直到序列按升序排列。然后它需要多少次。 例如,1 2 3 5 4,我们只需要一个操作:交换5和4。 Input 输入由许多测试用例组成。每种情况由两行组成:第一行包含一个正整数n(n <= 1000); 下一行包含从1到n的n个整数的置换。 Output 对于每一种情况,在独立的一行内输出最少交换的次数。 Sample Input 3 1 2 3 4 4 3 2 1 Sample Output 0 6 最近想找个递归分治的题目练练,就碰到这题。该题要求将一个序列中所有相邻逆序的元素恢复成升序的序列。 方法一 最原始的方法,利用两重循环进行枚举。该算法的时间复杂度为O(n^2),这中没什么好说的,虽简单但是效率比较低,不能通过测试。 import java.util.Scanner; public class Main { pub 继续阅读 >>


李猛 18/04/08 20:06:15
前几天把项目部署到阿里云上,能够让其他用户访问自己写的小东西。 但是一般访问的格式是 服务器ip:8080/项目名 这样显然有些麻烦,可以通过修改Tomcat的默认端口来解决。 打开Tomcat的安装文件夹: 1、进入conf,编辑server.xml 找到如下标签,将port设置为80 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 找到Host标签,像如下加入Context标签,doBase为项目所在的位置 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase 继续阅读 >>


李猛 18/03/22 23:22:40
Maven是什么? Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。 在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。 Maven提供了开发人员的方式来管理: Builds Documentation Reporting Dependencies SCMs Releases Distribution mailing list 概括地说,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。 安装Maven 1. 下载 下载链接 建立一个Maven文件夹,把下载的文件解压到该文件夹,并在Maven中建立一个Lo 继续阅读 >>


李猛 18/03/06 17:46:48