maven搭建ssm初级框架
喜欢的朋友可以关注下,粉丝也缺。
前言:
想必大家对smm框架已经熟悉的不能再熟悉了,它是由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。我们在一般的项目都能用到它,自己搭建一个smm也挺方便的。下面我就给大家介绍一下如何搭建一个初级的ssm框架。
下面吧demo的下载贡献给大家,需要的可以去下载
https://download.csdn.net/download/dsn727455218/10524640
正文:
1.创建一个maven项目,这个这里我就不做介绍了,很简单的,拿eclipse举例,下载maven插件就行,已经maven本地仓库。
2.准备需要得jar包,maven仓库有可以直接引用的,没有的可以动态的下载。
3.mybatis配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:remote/db.properties"
ignore-unresolvable="true" />
<!-- 配置数据源 使用的是Druid数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="driverClassName" value="${jdbc.driver}" /> <!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" /> <!-- 连接池最小空闲 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="33" />
<!-- 用来检测有效sql -->
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />
<!-- 监控数据库 -->
<property name="filters" value="mergeStat" />
</bean> <!-- myBatis文件内嵌 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
<property name="configLocation" value="classpath:spring/myBatis-config.xml" />
<property name="mapperLocations" value="classpath:com/demo/mapper/*.xml" />
<!-- 配置PageHelper拦截实现分页 -->
<!-- <property name="plugins"> -->
<!-- <array> -->
<!-- <bean id="sqlInterceptor" class="com.shou6.filter.SqlInterceptor"> -->
<!-- 拦截的sql语句 -->
<!-- <property name="sql_Intercept" value="^\s*select[\s\S]*$" /> -->
<!-- 不拦截的sql语句 ^\s*select\s+count\s*\\(\s*(?:\*|\w+)\s*\)\s+[\s\S]+$ -->
<!-- <property name="sql_Not_Intercept" value="^\s*select\s+[\s\S]+\S+_enable=1\s+[\s\S]+$" /> -->
<!-- </bean> -->
<!-- <bean class="com.github.pagehelper.PageHelper"> -->
<!-- <property name="properties"> -->
<!-- <value> -->
<!-- dialect=mysql -->
<!-- 该参数默认为false,设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用,和startPage中的pageNum效果一样 -->
<!-- offsetAsPageNum=true -->
<!-- 该参数默认为false,设置为true时,使用RowBounds分页会进行count查询 -->
<!-- rowBoundsWithCount=true -->
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
<!-- <property name="pageSizeZero" value="true"/> --> <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<!-- PageHelper.startPage(currentPage, pageSize, true)//第三个参数为true时,该设置的“pageNum>pages会查询最后一页”才生效 -->
<!-- reasonable=false -->
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 <property name="params" value="pageNum=start;pageSize=limit;"/> -->
<!-- </value> -->
<!-- </property> -->
<!-- </bean> -->
<!-- </array> -->
<!-- </property> -->
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.demo.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean> </beans>
4.myBatis-config:自动扫描实体类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 通过别名简化对类的使用 -->
<typeAliases>
<!-- 通过package, 可以直接指定package的名字, mybatis会自动扫描你指定包下面的javabean, 并且默认设置一个别名,默认的名字为非限定类名来作为它的别名。 -->
<package name="com.demo.entity" />
</typeAliases>
</configuration>
5.application-trans:事务管理
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 拦截器方式配置事物 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 传播行为 -->
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice> <!-- 方式1:注解方式配置事物管理 -->
<!-- <tx:annotation-driven transaction-manager="txAdvice" /> --> <!-- 方式2:Spring Aop配置事务管理 expose-proxy="true":解决非事务方法调用本类事务方法时事务不起作用 -->
<aop:config expose-proxy="true">
<aop:pointcut id="txPoint" expression="execution(* com.demo.service.impl.*.*(..))" />
<aop:advisor pointcut-ref="txPoint" advice-ref="txAdvice" />
</aop:config> </beans>
5.application:核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- xsi:schemaLocation尽量不配版本号,这样会默认从本地加载xsd文件,断网不会导致加载出错 --> <!--引入配置属性文件,使用@Value获取值 -->
<!-- <bean id="props" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> -->
<!-- <property name="locations"> -->
<!-- <list> -->
<!-- <value>classpath:nofilter.properties</value> -->
<!-- <value>classpath:config/param-injection.properties</value> -->
<!-- </list> -->
<!-- </property> -->
<!-- <property name="fileEncoding" value="UTF-8"/> -->
<!-- </bean> --> <!-- <import resource="application-quartz.xml"/> -->
<import resource="application-mybatis.xml"/>
<!-- <import resource="application-redis.xml"/> --> <!--自动扫描含有@Service将其注入为bean -->
<context:component-scan base-package="com.demo.service" /> <import resource="application-trans.xml"/> <!-- 用于持有ApplicationContext,可以使用BeanMgrUtil.getBean('xxxx')的静态方法得到spring bean对象 -->
<!-- <bean class="com.shou6.utils.tools.BeanMgrUtil" lazy-init="false" /> --> </beans>
6.spring-mvc:核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- spring全局异常捕获 -->
<!-- <bean class="com.shou6.utils.exception.ExceptionHandler" /> --> <!-- AOP拦截controller注意:需要把切面类和controller 放在同一个spring的xml配置文件中 -->
<context:component-scan base-package="com.demo.controller"/>
<!-- <context:component-scan base-package="com.shou6.filter"/> --> <!-- 对@AspectJ切面的bean创建代理(不设置则@Aspect注解的切面将无效) -->
<aop:aspectj-autoproxy proxy-target-class="true" /> <!-- Jackson转换器 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->
</list>
</property>
</bean> <!-- String转换器(为配合APP支付异步通知) -->
<bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" index="0"></constructor-arg><!--避免出现乱码 -->
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/xml;charset=UTF-8</value>
</list>
</property>
</bean> <!-- 启动Spring MVC的注解功能,完成请求和返回的POJO-json/xml自动转换 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<!-- json转换器 -->
<ref bean="mappingJacksonHttpMessageConverter" />
<ref bean="stringHttpMessageConverter" />
</list>
</property>
</bean> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<!-- 解决默认返回均是application/json格式问题 -->
<property name="contentType" value="text/html;charset=UTF-8" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean> <!-- 配置多文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<!-- 上传文件大小限制为5M,5120*1000b -->
<value>5120000</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean> </beans>
7.log4j:日志配置文件
# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL # Global logging configuration
log4j.rootLogger=debug,stdout # My logging configuration...
log4j.logger.cn.jbit.mybatisdemo=DEBUG ## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n log4j.logger.org.apache.ibatis=DEBUG
## log4j.logger.org.apache.jdbc.SimpleDataSource=DEBUG
log4j.logger.org.apache.ibatis.jdbc.ScriptRunner=DEBUG
## log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapclientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG #base log config
log4j.rootLogger=INFO,CONSOLE,INFO_FILE,ERROR_FILE
log4j.addivity.org.apache=true #console config
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{HH\:mm\:ss ms}]-%5p (%F\:%L)\:%m%n # information logs config
log4j.appender.INFO_FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFO_FILE.File=..\\logs\\OSS-INFO.log
log4j.appender.INFO_FILE.Threshold=INFO
log4j.appender.INFO_FILE.Append=true
log4j.appender.INFO_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.INFO_FILE.layout.ConversionPattern=[%d{HH\:mm\:ss ms}]-[%p]\:%m ->%l %n # error logs config
log4j.appender.ERROR_FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR_FILE.File=..\\logs\\OSS-ERROR.log
log4j.appender.ERROR_FILE.Threshold=ERROR
log4j.appender.ERROR_FILE.Append=true
log4j.appender.ERROR_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR_FILE.layout.ConversionPattern=[%d{HH\:mm\:ss ms}]-[%p]\:%m ->%l %n # fail bill logs config
log4j.logger.FAIL_BILL=INFO, FAIL_BILL
log4j.appender.FAIL_BILL=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FAIL_BILL.File=..\\logs\\FAIL_BILL.log
log4j.appender.FAIL_BILL.Threshold=FAIL_BILL
log4j.appender.FAIL_BILL.Append=true
log4j.appender.FAIL_BILL.layout=org.apache.log4j.PatternLayout
log4j.appender.FAIL_BILL.layout.ConversionPattern=[%d{HH\:mm\:ss ms}]\:%m %n
8.web:项目启动加载spring配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>MyDemo</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/application.xml</param-value>
</context-param> <!-- 监听spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 启动系统服务 -->
<!-- <listener> -->
<!-- <listener-class>com.shou6.init.ServerInitHandler</listener-class> -->
<!-- </listener> --> <!-- 防止内存泄漏 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener> <!-- 编码过滤 -->
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- spring mvc -->
<servlet>
<description>spring mvc servlet</description>
<servlet-name>mvcServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/spring-mvc.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvcServlet</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.mdo</url-pattern>
</servlet-mapping> </web-app>
所需要的配置文件就这么多,当然你需要redis,quartz也可以加入配置。
下面我就来测试一下
在项目中我创建BaseMapper作为一个父类接口,只需要继承就可以调用其方法,是为了方便重复创建方法;BaseService也是同样的道理。
首先我们创建一个实体类User:
/**
* @author dsn
*
* @version 创建时间:2018年7月5日 上午11:30:00
*/
package com.demo.entity; /**
* @author dsn
* @version 创建时间:2018年7月5日 上午11:30:00
*/
public class User { /**
* @return the id
*/
public int getId() {
return id;
} /**
* @param id
* the id to set
*/
public void setId(int id) {
this.id = id;
} /**
* @return the username
*/
public String getUsername() {
return username;
} /**
* @param username
* the username to set
*/
public void setUsername(String username) {
this.username = username;
} /**
* @return the userpass
*/
public String getUserpass() {
return userpass;
} /**
* @param userpass
* the userpass to set
*/
public void setUserpass(String userpass) {
this.userpass = userpass;
} /**
* @return the name
*/
public String getName() {
return name;
} /**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
} private int id;
private String username;
private String userpass;
private String name; }
创建一个dao层接口:继承BaseMapper引入实体类User
/**
* @author dsn
*
* @version 创建时间:2018年7月5日 上午11:35:10
*/
package com.demo.dao; import com.demo.entity.User; /**
* @author dsn
* @version 创建时间:2018年7月5日 上午11:35:10
*/
public interface UserMapper extends BaseMapper<User> { }
创建一个service接口:继承BaseService引入实体类User
/**
* @author dsn
*
* @version 创建时间:2018年7月5日 上午11:35:36
*/
package com.demo.service; import com.demo.entity.User; /**
* @author dsn
* @version 创建时间:2018年7月5日 上午11:35:36
*/
public interface UserService extends BaseService<User> { }
创建一个Mapper文件:UserMapper.xml,这里我写一个insert的语句以及一个select语句,需要注意的是column需要与实体类User字段对应以及对应的type
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.dao.UserMapper" >
<resultMap id="userResultMap" type="com.demo.entity.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="userpass" property="userpass" jdbcType="VARCHAR" />
</resultMap>
<select id="selectList" parameterType="User" resultMap="userResultMap">
select
id,username,userpass,name
from user
<where>
disable='1'
<if test="key!=null">
and (
username = #{key,jdbcType=VARCHAR}
or
name = #{key,jdbcType=VARCHAR}
)
</if>
</where>
</select>
<insert id="insert" parameterType="User"
useGeneratedKeys="true" keyProperty="id">
insert into user(name,username,userpass)
values(#{name},#{username},#{userpass})
</insert>
</mapper>
接下来我们创建一个UserAction:这是作为controller控制器,处理所有的访问请求以及逻辑
/**
* @author dsn
*
* @version 创建时间:2018年7月5日 上午11:47:26
*/
package com.demo.controller; import javax.annotation.Resource; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.demo.entity.User;
import com.demo.service.UserService; /**
* @author dsn
* @version 创建时间:2018年7月5日 上午11:47:26
*/
@Controller
@RequestMapping("user")
public class UserAction { @Resource
private UserService userService; @ResponseBody
@RequestMapping(value = "/adduser")
public String addactivity(User user, String msg) throws Exception {
int insert = userService.insert(user);
if (insert == 1) {
msg = "插入成功";
} else {
msg = "插入失败";
}
return msg;
} }
启动项目,用postman测试一下,完美收官。
下面吧demo的下载贡献给大家,需要的可以去下载
https://download.csdn.net/download/dsn727455218/10524640
如有需要可以加我Q群【308742428】大家一起讨论技术。
后面会不定时为大家更新文章,敬请期待。
喜欢的朋友可以关注下,粉丝也缺。
maven搭建ssm初级框架的更多相关文章
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
- 使用maven搭建ssm框架的javaweb项目
目前主流的javaweb项目,常会用到ssm(Spring+Spring MVC+Mybatis)框架来搭建项目的主体框架,本篇介绍搭建SSM框架的maven项目的实施流程.记之共享! 一.SSM框架 ...
- 使用maven搭建SSM框架
使用maven搭建SSM框架,首先得准备好maven环境. 搭建maven环境 第一步:下载maven http://maven.apache.org/download.cgi 下载后解压就可以了. ...
- 使用Maven搭建SSM框架(Eclipse)
今天学习一下使用Maven搭建SSM框架,以前都是用别人配置好的框架写代码,今天试试自己配置一下SSM框架. 这里我的参数是Windows7 64位,tomcat9,eclipse-jee-neon- ...
- 使用maven搭建ssm框架环境
1.前言 因为经常换环境,在搭ssm框架的时候老是出错,所以记录一下最近搭建的环境,以供参考. 本文讲解如何使用maven搭建ssm框架,并能用于简单的登录注册. IDE:IDEA,JDK版本:1.8 ...
- Maven 搭建 SSM 项目 (oracle)
简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...
- maven搭建ssm
前言 本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读<Maven 实战>.其实园内这方面文章已有不少,那么为什么我还要重复造轮子呢?我只是想记录自己的实践 ...
- 【原】无脑操作:eclipse + maven搭建SSM框架
网上看到一些Spring + Spring MVC + MyBatis框架的搭建教程,不是很详细或是时间久远了,自己动手整一个简单无脑的! 0.系统环境 1)Windows 10 企业版 2)JDK ...
随机推荐
- extjs如何使用
刚学ExtJs 不知道如何使用.. 我的操作步骤如下: 1. 在项目中导入ExtJs 2. 创建了一个one.js 和 helloworld.html 3. one.js中的代码如下: Ext.Mes ...
- 2018.10.31 bzoj4737: 组合数问题(lucas定理+容斥原理+数位dp)
传送门 这是一道让我重新认识lucaslucaslucas的题. 考虑到lucaslucaslucas定理: (nm)≡(n%pm%p)∗(npmp)\binom n m \equiv \binom ...
- Linux 下移植QT(1)---tslib 1.4.0移植
步骤1:下载工具包 如下图 链接在此,点我. 步骤2:将tslib文件放入Linux虚拟机中, 步骤3:解压源码 tar -xvf tslib-1.4.tar cd tslib-1.4 步骤4:执行a ...
- w7 目录
第17章 期中架构体系介绍 期中架构环境准备 01-期中架构内容简介 02-期中架构大酒楼详解 03-期中架构使用到的软件简介 04-期中架构运维角度观察与使用的软件 05-重头开始创建一台新的虚拟机 ...
- java学习3创建学生属性:学号、姓名、电话 完全实现对象集合的增删改查。(控制台来做)
首先创建一个student类其中包括get,set与构造函数 /** * */package work2; /** * @author Administrator * */public final c ...
- python中的分号
很多编程语言是以分号作为一行代码的的结束标志,但是在Python中不是这样的,而是靠缩进来识别程序结构. Python中一行代码以分号结束,并不是必须的,准确来说是不被推荐的,因为加上分号就是画蛇添足 ...
- Day1-python基础-变量常量
不积跬步无以至千里 补充上一节字符串的内容: 字符串格式化输出: name = input("name>>") print("My name is %s&qu ...
- redis概览
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串 ...
- 屏幕抓取程序 (位图DDB的例子)
屏幕抓取程序的意思是将整个屏幕图显示在应用程序的用户区中,等价于截图.对桌面窗口的操作:首先得知道桌面窗口的宽和高,获取宽和高需要利用窗口的设备句柄,而获取设备句柄需要知道窗口句柄,这一系列的连串关系 ...
- Write Markdown Syntax Online Document with Sphinx and Pandoc
There is no doubt that we have to write doc while we are developing software. But How do you write d ...