现在的java框架已经从SSH(spring+struts+Hibernate)过渡到了SSM(spring+springmvc+mybatis)。因为工作上用到的并不是spring框架,所以对spring并不是很熟悉,最近整理了一下以前的笔记,稍微再熟悉熟悉spring框架。
此次建立实例用到的是IntelliJ IDEA,应用maven来构建springmvc+mybatis+postgresql的web项目。打算创建一个基本的demo可以重复使用。
1、新建工程选择maven并配置相关信息。
2、此处可以随意填写。
3、选择下载好的maven。
4、设置项目名称。
5、点击finfish,maven的web项目就构建完成了,第一次构建可能要点时间,因为要现在相关内容(本人的速度还是挺快的,也可能是因为运气好吧),不过如果真的很慢那么请自行使用科学上网,或者参考网上的配置maven使用国内镜像下载。
1、再maven下载的资源结束后,就可以开始配置springmvc等相关的内容了。一般会默认的出现src文件夹,在文件加下会有main文件夹,main文件夹中会有webapp文件夹、resources文件夹,如果未出现自行建立也可以。
我们要在main中建立java文件夹用来存放java文件,在webapp文件加中建立css、js等文件用来放相关的资源文件。构建好的目录如下:
2、配置pom.xml,maven创建的项目要配置pom文件用来下载响应的jar包。
maven中央库在这里查找相关的maven地址。(代码很长这里就不放出来了,项目放在了github上,有需要的可以自取)
3、配置web.xml,文件中包括启动页,异常页,字符过滤等配置。部分代码如下:
<welcome-file-list>
<welcome-file>index.jspwelcome-file>
welcome-file-list>
<error-page>
<error-code>404error-code>
<location>/WEB-INF/404.htmllocation>
error-page>
<error-page>
<exception-type>java.lang.NullPointerExceptionexception-type>
<location>/WEB-INF/error.htmllocation>
error-page>
<session-config>
<session-timeout>360session-timeout>
session-config>
Spring框架给我们提供过滤器CharacterEncodingFilter 用来处理字符
<filter>
<filter-name>characterEncodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
param>
param>
<param-name>forceEncodingparam-name>
<param-value>trueparam-value>
param>
filter>
<filter-mapping>
<filter-name>characterEncodingFilterfilter-name>
/*
关联applicationContext.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>/WEB-INF/applicationContext.xmlparam-value>
context-param>
关联dispatcher-servlet.xml
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
如果你的DispatcherServlet拦截”/”,为了实现REST风格,拦截了所有的请求,那么同时对.js,.jpg等静态文件的访问也就被拦截了。为了不被拦截,配置如下代码:
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.cssurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.swfurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.gifurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.jpgurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.pngurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.jsurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.htmlurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.xmlurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.jsonurl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>defaultservlet-name>
<url-pattern>*.mapurl-pattern>
servlet-mapping>
4、配置好web.xml后就要开始配置applicationContext.xml和dispatcher-servlet.xml。
applicationContext.xml 部分代码如下:
<context:component-scan base-package="com.gcy"/>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:jdbc.propertiesvalue>
list>
property>
bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" 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}"/>
<property name="initialSize" value="${ds.initialSize}"/>
<property name="minIdle" value="${ds.minIdle}"/>
<property name="maxActive" value="${ds.maxActive}"/>
<property name="maxWait" value="${ds.maxWait}"/>
<property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="filters" value="stat"/>
bean>
其中jdbc.properties需单独配置,内容如下:
#JDBC Global Setting
#数据库Driver
jdbc.driver = org.postgresql.Driver
#数据库连接地址
jdbc.url = jdbc:postgresql://127.0.0.1:5432/saaswechat
#用户名密码
jdbc.username = postgres
jdbc.password = 123456
##DataSource Global Setting
#配置初始化大小、最小、最大
ds.initialSize=1
ds.minIdle=1
ds.maxActive=20
#配置获取连接等待超时的时间
ds.maxWait=60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
ds.timeBetweenEvictionRunsMillis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
ds.minEvictableIdleTimeMillis=300000
mybatis 相关配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.xml"/>
<property name="mapperLocations" value="classpath*:com/gcy/dao/xml/*Mapper.xml"/>
bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gcy.dao"/>
<property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"/>
bean>
dispatcher-servlet.xml 配置如下:
<context:annotation-config/>
<context:component-scan base-package="com.gcy.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>
<context:component-scan base-package="com.gcy.service"/>
<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>
<mvc:annotation-driven/>
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposeContextBeansAsAttributes" value="true"/>
bean>
到此 整个项目配置完成 ,上面只给出了部分代码,具体的代码请到GitHub上下载查看。或者直接下载代码。