一、SpringMVC概述熟悉MVC的同学都知道,MVC即model(模型)、view(视图)、controller(控制),用一种业务逻辑,数据,界面显示分离的方式使得开发更加的便捷高效,具有低耦合,高重用性,可维护性等优点。
因此,SpringMVC分为用户界面层(view)、web层(controller)、领域模型层(model)。
用户界面层:有两个重要的接口 org.springframework.web.servlet.View接口呈现了web应用程序的视图或者页面,它负责将客户端请求操作的结果转化为一个客户端可见的表单。通俗的讲就是页面的展示,springmvc支持了JSP、Freemarker、Velocity、XSTL、JasperReport、Excel和PDF。 org.springframework.web.servlet.viewResolver提供了一个间接层,ViewResolver提供了视图实例与逻辑名称的映射。
例如,一个文件名为/WEB-INF/jsp/success.jsp的jsp页面,通过”success”名称被引用,使得视图和代码引用解耦。
web层:关键词Controller、ModelAndView springmvc提供了一个org.springframework.web.servlet.mvc.Controller接口及其他。Controller负责接收HttpServletRequest和HttpServletResponse,将请求导航到指定路径的方法中,并且组装了一个ModelAndView,包含了一个相应所有数据的map以及一个view的名称引用。
领域模型层:是客户和系统交互的对象模型 采用ORM框架使得对象模型与数据库对象关系进行映射交互,也就是我们理解的POJO对象,此片文章采用mybatis的ORM框架
Spring Web MVC处理请求的流程
二、MyBatis概述MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Mybatis分为三层:
API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。三、项目构建过程及代码实现环境需求:1、Eclipse
1、Java JDK、JRE1.7
2、Tomcat7.0
1、Maven项目创建Next
Next
maven-archetype-webapp
Group Id和Artifact Id任意填写--->Finish
创建完成项目会发下index.jsp报错
maven 构建web项目index.jsp报错问题解决解决办法:
JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path。原来Javaweb工程类中没有添加Tomcat运行时相关类导致。
下面是具体的解决方法:
1、右击web工程—>属性或Build Path—>Java Build Path—>Libraries—> Add Libray...—>Server Runtime —>Tomcat Server—>Finish
添加后就出现Tomcat7.0,此处我用的是7.0
2、切换到Java Build Path界面中的Orader and Export,选择Tomcat,报错就没有了。
注意:按以上方法操作时,若打开Server Runtime后一片空白,需要设置Apache服务器。设置方法为:window->Preferences->Server->Runtime Environment -> add --> 选择Apache的版本后点Next,再填入你apache服务器软件的安装(解压后)地址。
2、代码配置文件项目demo所有文件
1、pom.xml文件,引入必须架包
代码语言:javascript复制 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
代码语言:javascript复制
xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
代码语言:javascript复制<%@ page language="java" contentType="text/html; charset=Utf-8"
pageEncoding="utf-8"%>
window.location.href = "<%=request.getContextPath()%>/asset/user/selectAllUser";
3、重要的整合文件
SpringMVC整合文件
具体代码文件我就不贴出来了(偷下懒,嘻嘻),这里给下我的资源链接,大家可以自行下载,参考;
http://download.csdn.net/download/hsxy123123/9929239
4、利用MyBatis Generator自动创建代码
这个可根据表自动创建实体类、MyBatis映射文件以及DAO接口,当然,我习惯将生成的接口名改为IUserDao,而不是直接用它生成的UserMapper。如果不想麻烦就可以不改。完成后将文件复制到工程中。
可以参考我的SSM框架——使用MyBatis Generator自动创建代码
红色线内是生成代码
5、userController.java,不能生成,那我就贴出来呗。
代码语言:javascript复制package com.ssm.asset.user.controller;
import java.util.List;
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.ssm.asset.user.domain.User;
import com.ssm.asset.user.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController{
@Resource
private UserService userService;
@RequestMapping(value = "/selectAllUser")
@ResponseBody
public List
List
return userList;
}
}6、UserService.java文件,那我也贴出来
代码语言:javascript复制package com.ssm.asset.user.service;
import java.util.List;
import com.ssm.asset.user.domain.User;
public interface UserService {
public List
}7、UserServiceImpl .java我也贴出来
代码语言:javascript复制package com.ssm.asset.user.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.ssm.asset.user.dao.UserMapper;
import com.ssm.asset.user.domain.User;
import com.ssm.asset.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userDao;
public List
List
return userList;
}
}8、测试
至此已经完成了SSM三大框架的整合了,接下来测试一下,如果成功了,那么恭喜你,如果失败了,继续调试吧,作为程序员就是不停的与BUG做斗争!
是不是很嗨皮
偷了许多懒,还请小伙伴见谅!!!,喜欢就点赞,爱我就打赏,嘻嘻