springMVC+Mybatis+maven实例

现在的java框架已经从SSH(spring+struts+Hibernate)过渡到了SSM(spring+springmvc+mybatis)。因为工作上用到的并不是spring框架,所以对spring并不是很熟悉,最近整理了一下以前的笔记,稍微再熟悉熟悉spring框架。

此次建立实例用到的是IntelliJ IDEA,应用maven来构建springmvc+mybatis+postgresql的web项目。打算创建一个基本的demo可以重复使用。

IDEA下建立maven的web项目

1、新建工程选择maven并配置相关信息。
这里写图片描述
2、此处可以随意填写。
这里写图片描述
3、选择下载好的maven。
这里写图片描述
4、设置项目名称。
这里写图片描述
5、点击finfish,maven的web项目就构建完成了,第一次构建可能要点时间,因为要现在相关内容(本人的速度还是挺快的,也可能是因为运气好吧),不过如果真的很慢那么请自行使用科学上网,或者参考网上的配置maven使用国内镜像下载。

搭建基于springmvc整合mybatis的web项目

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.jsp</welcome-file>
</welcome-file-list>

<!--当系统出现404错误,跳转到页面404.html-->
<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/404.html</location>
</error-page>
<!--当系统出现异常,跳转到页面error.html-->
<error-page>
    <exception-type>java.lang.NullPointerException</exception-type>
    <location>/WEB-INF/error.html</location>
</error-page>
<!--会话超时配置,单位分钟-->
    <session-config>
    <session-timeout>360</session-timeout>
</session-config>

Spring框架给我们提供过滤器CharacterEncodingFilter 用来处理字符

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

关联applicationContext.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-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等静态文件的访问也就被拦截了。为了不被拦截,配置如下代码:

    <!--要写在DispatcherServlet的前面,让defaultServlet先拦截请求,这样请求就不会进入Spring了-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.swf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.xml</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.json</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.map</url-pattern>
    </servlet-mapping>

4、配置好web.xml后就要开始配置applicationContext.xml和dispatcher-servlet.xml。
applicationContext.xml 部分代码如下:

<!-- 自动扫描SpringMVC包 ,将带有注解的类 纳入spring容器管理 -->
<context:component-scan base-package="com.gcy"/>

<!-- 引入jdbc配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath*:jdbc.properties</value>
        </list>
    </property>
</bean>
<!-- dataSource 配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!-- 基本属性 url、user、password -->
    <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"/>

    <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
    <!--<property name="poolPreparedStatements" value="false"/>-->
    <!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>-->

    <!-- 配置监控统计拦截的filters -->
    <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 相关配置

<!-- mybatis文件配置,扫描所有mapper.xml文件 -->
<!-- 配置mybatisSqlSessionFactoryBean -->
<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>

<!-- 配置SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
<!-- 配置mybatis mapper接口,扫描所有dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.gcy.dao"/>
    <property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"/>
</bean>

dispatcher-servlet.xml 配置如下:

<!--此文件负责整个mvc中的配置-->

<!--注解配置 启用spring的一些annotation -->
<context:annotation-config/>

<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.gcy.controller">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--扫描service-->
<context:component-scan base-package="com.gcy.service"/>

<!--静态资源映射-->
<!--本项目把静态资源放在了webapp的statics目录下,资源映射如下-->
<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>

<!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
<mvc:annotation-driven/>

<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
<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/"/><!--设置JSP文件的目录位置-->
    <property name="suffix" value=".jsp"/>
    <property name="exposeContextBeansAsAttributes" value="true"/>
</bean>

到此 整个项目配置完成 ,上面只给出了部分代码,具体的代码请到GitHub上下载查看。或者直接下载代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值