Tagged: SpringMvc

Spring 静态资源过滤

如果web.xml配置的拦截器如下

<!-- 配置 SpringMVC DispatcherServlet -->
<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*:config/applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
    <!--<multipart-config>-->
    <!--<location>/</location>-->
    <!--<max-file-size>2097152</max-file-size>-->
    <!--<max-request-size>4194304</max-request-size>-->
    <!--</multipart-config>-->
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 默认匹配所有的请求 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

那么,静态资源如js、css、图片等都会经过org.springframework.web.servlet.DispatcherServlet过滤,DispatcherServlet当然处理不了这些文件,所以这些文件就发送不到客户端了。

这样我们可以使用spring的静态资源处理器,相当于告诉SpringMVC,凡是请求路径为/assets/开始的,都自动映射到/resources目录下面对应的文件上去。

<mvc:resources mapping="/assets/**" location="/resources/"/>

同时还有一个地雷,若你配置了拦截器,且拦截的是 /** ,那么你就必须换个处理方式了。

1、使用拦截器的排除 <mvc:exclude-mapping path="你的静态资源路径" />

2、交由web容器处理,在org.springframework.web.servlet.DispatcherServlet之前加入如下了内容

<servlet-mapping>    
    <servlet-name>default</servlet-name>    
    <url-pattern>/js/*</url-pattern>    
    <url-pattern>/css/*</url-pattern>    
    <url-pattern>/images/*</url-pattern>    
    <url-pattern>/fonts/*</url-pattern>    
</servlet-mapping>

内容根据情况更改!

当然,我们还可直接让上游来直接处理静态资源,这时我们只需要在springmvc配置中加入

<mvc:default-servlet-handler/>

然后再到web.xml里面做映射即可,映射内容如下

<servlet-mapping>    
    <servlet-name>default</servlet-name>    
    <url-pattern>/js/*</url-pattern>    
    <url-pattern>/css/*</url-pattern>    
    <url-pattern>/images/*</url-pattern>    
    <url-pattern>/fonts/*</url-pattern>    
</servlet-mapping>

Spring/SpringMVC/MyBatis注解备忘录

Spring


@Autowired

自动装配,其作用是为了消除java代码里面的getter/setter与bean属性中的property。@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。

@Qualifier(指定注入Bean的名称)

如果一个容器有一个以上匹配的Bean,则可以使用@Qualifier注解限定Bean的名称。

@Resource

与@Autowired类似,默认通过name属性去匹配Bean,找不到再按type去匹配,指定了name或者type则根据指定类型去匹配Bean

@Service

标注业务层组件

@Controller

标注控制层组件

@Repository

标注数据访问层组件(即Dao组件)

@Component

泛指组件,当组件不好归类的时候,可以使用这个组件进行标注

@Configuration

把这个类作为一个Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

@Scope

作用域(常用来设置该类是否为单例或多例)

@Lazy

表示延迟初始化(Spring默认是延迟加载,如果是工具类,则可以使用它来进行标注容器启动即实例化)

@PostConstruct

用于指定初始化方法(用在方法上)

@PreDestory

用于指定销毁方法(用在方法上)

@DependsOn

定义Bean初始化及销毁时的顺序

@Primary

自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常

@Async

异步方法调用

@EnableScheduling

开启对计划任务的支持

@EnableAspectJAutoProxy

激活Aspect自动代理

@EnableAsync

开启异步方法的支持

@EnableWebMVC

用来开启Web MVC的配置支持

@EnableConfigurationProperties

用来开启对@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories

开启对Spring Data JPA Repostory的支持

@EnableTransactionManagement

注解开启注解式事务的支持

@EnableCaching

开启注解式的缓存支持

SpringMVC


@RequestMapping

处理请求地址映射,可用于类或者方法上

@PathVariable

获取Url中的动态参数

@RequestParam

将请求参数绑定到方法参数上

@RequestBody

将HTTP请求正文转换为适合的HttpMessageConverter对象

@ResponseBody

将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流

@RestController

这个注解的类会被看作一个controller。controller中使用@RequestMapping的方法有一个默认的@ResponseBody注解。@ResponseBody也可以加到类一级,通过继承方法一级不需要添加。

@ModelAttribute

标明该方法的目的是添加一个或多个模型属性(Model attributes)。@ModelAttribute标注的方法会在@RequestMapping方法调用之前而调用

@SessionAttributes

将值放到Session作用域中,写在Class上面

@CookieValue

cookie 数据到处理器功能处理方法的方法参数上的绑定

@RequestHeader

请求头(header)数据到处理器功能处理方法的方法参数上的绑定

@ResponseStatus

定义处理器功能处理方法/异常处理器返回的状态码和原因

@ExceptionHandler

注解式声明异常处理器

MyBatis


@Insert

插入sql , 和xml insert sql语法完全一样

@Select

查询sql, 和xml select sql语法完全一样

@Update

更新sql, 和xml update sql语法完全一样

@Delete

删除sql, 和xml delete sql语法完全一样

@Param

入参

@Results

结果集合

@Result

结果