1.创建项目
在Eclipse中创建项目,右键解决报错即可导入MyEclipse中,防止Myeclipse中总是报错问题
2.导包(以后可能会补充)
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--2.3 导入Mybatis相关的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<!--2.4 导入jstl测试包-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--2.5 导入json相关的jar包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
<!--2.6 导入junit相关的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- <scope>test</scope>测试用,不复制到WEB-INF里面 -->
<scope>test</scope>
</dependency>
<!--2.7导入文件上传和下载的jar包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!--2.8导入log4j相关的jar包-->
<dependency>
<groupId>org.apache</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
<!--2.9导入commons基础包-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!--2.10javax/servlet/ServletContext的jar包-->
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
3.解决maven报错的系列问题
One or more constraints have not been satisfied. SSMDemo line 1 Maven Java EE Configuration Problem
JAX-RS (REST Web Services) 2.0 requires Java 1.7 or newer. SSMDemo line 1 Maven Java EE Configuration Problem
在pom.xml中添加如下:指定maven的jdk版本为1.7
1.7
4.配置web.xml,配置了一个转发器和编码过滤器
注意路径位置:
5.整合SpringMVC
添加Spring-MVC.xml的配置文件夹
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-mvc.xml
(1)注意扫描接口包的位置base-package="com.git.user.controller"
<context:component-scan base-package="com.git.user.controller"></context:component-scan>
(2)注意转发位置:value="/web/"和value=".jsp"
6.创建控制器类UserController.java位置路径与Spring-mvc扫描路径相互匹配(com.git.user.controller.UserController.java)
编写如下代码,返回到主页index.jsp
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/index")
public String showIndex(){
return "index";
}
(1)注意添加@Controller注解
(2)注意规划请求路径@RequestMapping("/user")
7.创建测试用的jsp页面,注意路径为/webapp/web/index.jsp
8.测试SpringMVC的整合
启动Tomcat,访问Http://localhost:8080/user/index.do是否正常打开页面,正常打开,则整合成功.
9.配置数据库连接参数的配置文件(db.properties)
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\db.properties
10.创建spring管理数据库的配置文件(Spring-db.xml))
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-db.xml
(1)注意引入位置:location="classpath:db.properties"
<util:properties id="dbConfig" location="classpath:db.properties"></util:properties>
(2)注意自动扫描xml文件的位置value="classpath:mappers/*.xml"
(3)注意扫描接口包的位置value="com.git.user.mapper"
11.创建UserMapper.java类.空接口类,防止测试spring和Mybatis整合时报错.
12.创建userMapping.xml映射文件,空文件,防止测试spring和Mybatis整合时报错
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\userMapper.xml
(1)注意扫描接口类的位置namespace="com.git.user.mapper.UserMapper"
13.测试spring与Mybatis的整合,建立测试类:
AbstractApplicationContext ctx;
UserMapper userMapper;
@Before
public void init(){
ctx=new ClassPathXmlApplicationContext("spring-db.xml");
userMapper=ctx.getBean("userMapper", UserMapper.class);
}
@After
public void destory(){
ctx.close();
}
@Test
public void testDbcpConnection(){
BasicDataSource bds=ctx.getBean("bds", BasicDataSource.class);
System.out.println(bds);
}
输出结果为:
org.apache.commons.dbcp.BasicDataSource@1bc63a3
即表示整合成功!
14.新建实体类bean文件User.java(位置:com.git.User.bean.User.java)
注意需要序列号
15.新建ResponseResult类,
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\ResponseResult.java
16.编写UserMapper.java接口类,编写抽象方法.例如:
public void insertUser(User user);
17.编写userMapping.xml映射文件.例如:
insert into user(
id,name,pwd,ceatedatetime,modifydatetime
)values(
#{id},#{name},#{pwd},#{createDateTime},#{modifyDateTime}
)
18.编写测试类,测试是否能插入数据到数据库中.例如:
@Test
public void testInsertUser(){
User user=new User();
user.setId("ABC");
user.setName("小明");
user.setPwd("123456");
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userMapper.insertUser(user);
}
19.检查数据库中是否插入了数据,插入了数据,则表示eclipse与数据库通过Mybatis接通完毕
测试:注意在ctx=new ClassPathXmlApplicationContext("spring-db.xml");中添加"spring-mvc.xml"
20.编写业务层service接口UserService.java定义接口方法.例如
public void insertUser(User user);
21.编写业务层实现类UserServiceImpl.java实现UserService接口
@Service("userService")
public class UserServiceImpl implements UserService{
@Resource(name="userMapper")
private UserMapper userMapper;
@Override
public void insertUser(User user) {
// TODO Auto-generated method stub
userMapper.insertUser(user);
}
}
注意两点,
(1)注意添加注解@Service("userService")
(2)注意引入对象实例是用的@Resource(name="userMapper")
21.引入Spring管理service业务层的配置文件
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\spring-service.xml
注意扫描路径:base-package="com.git.user"与管理的service业务层的包相互匹配
22.测试业务层是否已经贯通,在测试类中测试,
@Test
public void testServiceInsert(){
User user=new User();
user.setId("DEF");
user.setName("小红");
user.setPwd("123456");
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userService.insertUser(user);
}
注意:
(1)声明对象UserService userService;
(2)管理配置文件中添加ctx=new ClassPathXmlApplicationContext("spring-db.xml","spring-mvc.xml","spring-service.xml");中的"spring-service.xml"
(3)获取其对象userService=ctx.getBean("userService", UserService.class);
检查数据库是否插入数据,若插入了数据,则表示业务层与数据库已经贯通
23.重新修改index.jsp.添加一个注册表单,测试注册功能是否能正常工作;添加代码如下:
js代码如下:
function regist() {
$.ajax({
url:"regist.do",
type:"post",
datatype:"json",
data:{
name:$("#name").val(),
pwd:$("#pwd").val()
},
success:function(obj){
alert(obj.message)
}
})
}
(1)注意引入js文件
24.控制器端,在UserController.java中添加注册对应的功能动作如下:
@ResponseBody
@RequestMapping("/regist.do")
public ResponseResult
System.out.println(name+";"+pwd);
ResponseResult
result.setState(ResponseResult.STATE_OK);
result.setMessage("请求成功");
return result;
}
(1)注意返回的是实体,需要注解@ResponseBody
(2)注意请求路径为,需要注解:@RequestMapping("/regist.do")
(3)注意接收参数,需要注解@Param("name")String name,@Param("pwd")String pwd.其中name和pwd必须与jsp中的名字相对应
25.在index.jsp注册页面,测试,服务器端能否接收到前端的注册信息.如果能接收到,证明注册业务的前后端已经贯通.
26.继续在服务器端完善代码如下:
@ResponseBody
@RequestMapping("/regist.do")
public ResponseResult
System.out.println(name+";"+pwd);
ResponseResult
User user=new User();
user.setId("FRG");
user.setName(name);
user.setPwd(pwd);
user.setCreateDateTime(new Date());
user.setModifyDateTime(new Date());
userService.insertUser(user);
result.setState(ResponseResult.STATE_OK);
result.setMessage("请求成功");
return result;
}
27.在注册页面进行注册,若能在数据库中插入,即表示整个流程贯通,环境搭建完毕
28.拦截器
创建拦截器类LoginInterceptor.java(位置:com.git.user.interceptor),继承HandlerInterceptor,代码如下:
public class LoginInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
HttpSession session=request.getSession();
if(session.getAttribute("uid")!=null){
return true;
}else{
String url=request.getContextPath()+"/user/login.do";
response.sendRedirect(url);
return false;
}
}
29.在spring-mvc中展开拦截器规则即可
30.配置log4j
见复制 F:\刘付勇\刘付勇个人资料\总结\保存的文件\配置文件\log4j.properties
log4j的使用:
在类里添加:private static final Logger logger=Logger.getLogger(UserServiceImpl.class);