准备搭建一个个人网站,由于以前没搭建过SSM框架,上一间公司虽然使用Struts2+Spring+MyBatis,但是基本上是在框架之上写业务,对几大传统的框架理解还是很浅,而现在工作的公司使用的是Play框架,有别于SSM这类框架,是一种非常轻量级的框架。本来有打算用play的,但是考虑一些ssm太久没使用过了,这次就顺便当练手吧。
不打算去记录搭建的每一个步骤,因为这类型的文章实在太多了。基本上网上的资源是完全且轻松地搭建出来的。何况我也仅仅是跟着他们的指引(ctrl+c)搭出来的。还没搭建的时候觉得应该是挺简单的,但是实际搭建的时候还是遇到不少烦人的小问题。所以特意记录下来。文章最底有项目源码
简要步骤:
一、Maven搭建:
Maven管理项目有很多优点,目前对于我来说最方便的功能是不用自己手动导入jar包,直接在pom.xml文件描述,它会自动从网上下载导入。
下载maven包解压配置环境,修改配置文件。关联eclipse
网上的详细教程
项目结构:
二、SpringMVC:
springMVC的controller与Struts2不一样,Struts2的访问路径一般方式(可以修改)是 url/项目名/类!方法, 而springMVC则是使用注解方法定义路径:
@Controller //声明自己是一个controller
public class UserController {
@Resource
public UserService userService;
@RequestMapping("/hello") //访问路径 127.0.0.1/项目名/hello
public String test() {
User user = new User();
user.setId(3);
user.setUsername("hello");
user.setPassword("oksai");
userService.insert(user);
return "/index"; //它会返回 index.jsp
}
}
使用SpringMVC需要在web.xml配置DispatcherServlet以及拦截路径
web.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>classpath*:SpringMVC-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
//所有访问都必须经过DispatcherServlet
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
SpringMVC-servlet.xml(这个文件名是可以自定义的,在web.xml里定义)
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.blogs.controllers" />
<!-- 开启注解模式驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 扫包 -->
<context:component-scan base-package="com.springmvc.*"></context:component-scan>
<!-- 静态资源过滤 -->
<mvc:resources location="/resources/" mapping="/resources/**"/>
<!-- 视图渲染 jsp/freemaker/velocity-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 制定页面(jsp)存放的路径-->
<property name="prefix" value="/WEB-INF"></property>
<!-- 文件的后缀 Controller返回的字符串会自动加上".jsp"后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
基本上配置SpringMVC就是这样的流程:配置web.xml,配置SpringMVC-servlet,创建Controller,注解声明。
三、Spring
Spring有依赖注入和面向切面两大特点。依赖注入不需要开发者手动的创建对象(new),只需要在Application.xml中声明
Application.xml是Spring的核心配置文件,可以配置数据库、事务、日志、与其它框架搭配使用等核心基础功能。是SSM项目的核心文件。
//autowire属性声明注入的几种方式:默认(手动关联)、名字、类型,
<bean id="userService" class="com.blogs.service.impl.UserServiceImpl" autowire="byName"/>
同时需要在web.xml里面声明监听器ContextLoaderListener,(Spring的入口)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
<!-- 默认是/WEB-INF/applicationContext.xml -->
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
四、MyBatis:
Application.xml文件
<!-- spring配置MyBatis,不再需要配置mybatis的映射文件,注入SqlSessionFactoryBean-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" autowire="byName">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com.blogs.mapper.*.xml"></property>
</bean>
//数据库驱动jar包别忘了
@Repository
public class UserDaoImpl implements UserMapper {
@Resource
SqlSessionFactory sqlSessionFactory;
private SqlSession getSession() {
return sqlSessionFactory.openSession();
}
public int insert(User record) {
return getSession().insert("com.blogs.mapper.UserMapper.insert", record);
}
}
UserMapper.xml
<?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路径一致 -->
<mapper namespace="com.blogs.mapper.UserMapper">
<insert id="insert" parameterType="com.blogs.model.User">
insert into user (id, userName, passWord
)
values (#{id}, #{username}, #{password}
)
</insert>
</mapper>
五、MyBatis-Generator工具
这个工具是能根据数据库的表自动生成最基础的mapper.xml和dao接口文件,使用方法非常的简单,在eclipse中,Help->eclipse MarketPlace,搜索 “MyBatis-Generator”,安装.重启eclipse。
创建一个generatorConfig.xml文件,网络上很多配置模板,直接复制就行,,我也是引用别人的详细教程
简单来说就是1.对应数据库驱动包、数据库url/账户/密码/数据表,生成的文件存放路径。
总结:网上有大量前人的教程,搭建基础框架是完全没难度的,唯一需要的就是细心、耐心,我在配置数据库数据的jdbc.properties文件时多了一个空格,报错了,找了半天一度想放弃,幸好网上也有前人遇到过同样的问题。站在巨人的肩膀上才能看得更远,不要一个人钻牛角尖,非常耗时间。多做笔记很重要
实习至今已经将近工作一年了,毕业四个月但是却感觉自己的技术提升非常的缓慢。一直在找提高学习效率的方法,碎片化知识的时代,知识零散,基本上各个领域的大牛都推荐 做笔记+写作。我也感觉到在写作的过程中很多脑海里是清晰的知识,再去用文字展示出来的时候逻辑表达很凌乱。
这篇文章比较零散,只是本人的学习笔记,如果需要系统的教程,可能不适合大家。另外文章用了网上其他人的资源和代码,有些是直接复制修改的,来源我自己也忘记了,如果文章的内容侵犯到您的版权请通知我。