发表于: 2020-05-19 21:26:52

1 1312


Spring MVC

单纯的mvc只包含了控制层,这里和ssm做了框架整合

Spring MVC 是 Spring 提供给 Web 应用的框架设计。Spring MVC 是一个典型的教科书式的 mvc 构架,不像 Struts 等都是变种或者不是完全基于 mvc 系统的框架。Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。作为当今业界最主流的 Web 开发框架,Spring MVC 已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。

MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。

模型:用于存储数据以及处理用户请求的业务逻辑。

  • 视图:向控制器提交数据,显示模型中的数据。
  • 控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。

基于 Servlet 的 MVC 模式的具体实现如下。

  • 模型:一个或多个 JavaBean 对象,用于存储数据(实体模型,由 JavaBean 类创建)和处理业务逻辑(业务模型,由一般的 Java 类创建)。
  • 视图:一个或多个 JSP 页面,向控制器提交数据和为模型提供数据显示,JSP 页面主要使用 HTML 标记和 JavaBean 标记来显示数据。
  • 控制器:一个或多个 Servlet 对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的 JavaBean,并将处理结果存放到实体模型 JavaBean 中,输出给视图显示。

基于 Servlet 的 MVC 模式的流程如图 1 所示。

参考:http://c.biancheng.net/view/4391.html

SSM (SSM 框架集)

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。

Spring
  Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
  Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
  SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
  mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。


Spring MVC的增删改查

//    新增用户
//    @param id 用户id
//    @param user 用户信息
//    @return 结果
   @RequestMapping(value = "/a/user", method=RequestMethod.POST)
@ResponseBody
   public Map<String, Object> addUser(User user){
Map<String, Object> resultMap = new HashMap<>();
       resultMap.put("status", 0);
       try {
Integer id = userService.addUser(user);
           resultMap.put("data", id);
       }catch (Exception e){
e.getMessage();
           logger.error(e.getMessage());
           resultMap.put("status", -1);
       }
return resultMap;
   }

//    删除用户
//    @param id 用户id
//    @param user 用户信息
//    @return 结果
   @RequestMapping(value = "/a/user/{id}", method=RequestMethod.DELETE)
@ResponseBody
   public Map<String, Object> deleteUser(@PathVariable Long id){
Map<String, Object> resultMap = new HashMap<>();
       resultMap.put("status", 0);
       try {
Integer result = userService.deleteUser(id);
           resultMap.put("data", result);
       }catch (Exception e){
e.getMessage();
           logger.error(e.getMessage());
           resultMap.put("status", -1);
       }
return resultMap;
   }

//    更改用户
//    @param id 用户id
//    @param user 用户信息
//    @return 结果
   @RequestMapping(value = "/a/user/{id}", method=RequestMethod.PUT)
@ResponseBody
   public Map<String, Object> updateUser(@PathVariable Long id, User user){
Map<String, Object> resultMap = new HashMap<>();
       resultMap.put("status", 0);
       try {
Integer result = userService.updateUser(user);
           resultMap.put("data", result);
       }catch (Exception e){
e.getMessage();
           logger.error(e.getMessage());
           resultMap.put("status", -1);
       }
return resultMap;
   }

//    查询用户详情
//    @param id 用户id
//    @return 结果
   @RequestMapping(value = "/a/user/{id}", method=RequestMethod.GET)
@ResponseBody
   public User getUser(@PathVariable Long id){
logger.info("你好世界");
       System.out.println("________________");
       User user = userService.selectObject(id);
       logger.info("user is "+user);
       return user;
   }


//    查询用户列表
//    @return 结果
   @RequestMapping(value = "/a/user/list", method=RequestMethod.GET)
@ResponseBody
   public Map<String, Object> getUserList(){
Map<String, Object> resultMap = new HashMap<>();
       resultMap.put("status", 0);
       try {
List<User> userList = userService.selectList();
           resultMap.put("data", userList);
       }catch (Exception e){
e.getMessage();
           logger.error(e.getMessage());
           resultMap.put("status", -1);
       }
return resultMap;
   }


web.xml配置详情

web.xml:

servlet——MVC前端控制器

参考:https://blog.csdn.net/m751075306/article/details/9452893


restful风格接口

GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。

POST(CREATE):在服务器新建一个资源,调用insert操作。
PUT(UPDATE):在服务器更新资源,调用update操作。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。(目前jdk7未实现,tomcat7也不行)。
DELETE(DELETE):从服务器删除资源,调用delete语句。

参考:https://www.cnblogs.com/ycq-qiang/p/11139915.html


启动tomcat时报错:不允许有匹配 "[xX][mM][lL]" 的处理指令目标。 

原因: <?xml version="1.0" encoding="UTF-8"?>前不能有空行,所有xml第一句严格按照规范<?xml version="1.0" encoding="UTF-8"?>前不要空格、注释或其他东西

参考:https://www.cnblogs.com/jap6/p/10653617.html


报错: No qualifying bean of type 'service.UserService' available: expected at least 1 bean which qualifies as autowire candidate.

更改applicationContext.xml的basepackage,把4个文件夹(pojo,dao,service,controller)都放在一个文件夹下cn/Esther扫描

参考:https://www.cnblogs.com/black-knight/p/7992795.html


点击右上角运行tomcat:

如图run运行tomcat:


返回列表 返回列表
评论

    分享到