• SpringMVC入门


    目录

     

    一、Springmvc简介及配置

    导入pom依赖

      二、Springmvc之helloworld实现

     配置tomcat服务器 根据图片进行操作

    三、Springmvc常用注解及返回处理

    四、增删改查


    一、Springmvc简介及配置

    1视图层框架(部分功能是向着用户渲染展示数据)

    2.控制层框架(接收浏览器的任意请求,找到dispactherServlet),子控制器(适配器*Adapter)找到对应的适配器处理请求

    导入pom依赖

    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    

     

         

    1. <dependency>
    2. <groupId>jstlgroupId>
    3. <artifactId>jstlartifactId>
    4. <version>1.2version>
    5. dependency>
    6. <dependency>
    7. <groupId>taglibsgroupId>
    8. <artifactId>standardartifactId>
    9. <version>1.1.2version>
    10. dependency>

     在WEB-INF下添加springmvc-servlet.xml(spring-mvc.xml)

      二、Springmvc之helloworld实现

    第一个springMVC程序:HelloWorld

    2.配置文件配置

    2.1 扫描base-package

    [ 定义注解扫描

    开启注解扫描

    开启动态扫描]

    2.2配置视图解析器

    本地资源视图解析器:internalResourceViewResolver

    prefix 前缀

    suffix 后缀

    springmvc-servlet.xml

    
    
        
        
        
        
    
        
        
        
        
    
        
        
            
            
            prefix" value="/"/>
            suffix" value=".jsp"/>
        
    
        
        
        
        
    
    
    
    

    多功能视图解析器

    2.3 做静态资源映射

     修改web.xml

    
      Archetype Created Web Application
      
        contextConfigLocation
        classpath:applicationContext.xml
      
      
      
        org.springframework.web.context.ContextLoaderListener
      
    
      
      
        SpringMVC
        org.springframework.web.servlet.DispatcherServlet
        
        
          contextConfigLocation
          /WEB-INF/springmvc-servlet.xml</param-value>
        
        1
        
        true
      
      
        SpringMVC
        /
      
    
    

    
    
    
    
            
    
    
    
    

     更新项目目录下

     配置tomcat服务器 根据图片进行操作

     下一步

     下一步

    正在上传…重新上传取消

     

     

     

     最终完成

     最终运行项目jsp界面 访问测试

    测试地址:http:localhost:8080/helloReq

    总结:

    1.导入pom依赖

    2.springmvc.xml配置

    3.web.xml

    4.开发:

     @controller

    @requsetmapping

      

      Springmvc工作原理: 面试题

    1.浏览器发送请求(http://localhost:8080/helloReq)找到中央控制器DispatcherServlet

    2.中央控制器DispatcherServlet通过处理器映射器handlermapping找到处理器。找到handlerAdapter

    3.执行handlerAdapter 返回值ModelAndView回传给DispatcherServlet

    4.视图解析器viewResolver会对返回值ModelAndView 进渲染,得到,得到view视图对象

    5.最后DispatcherServlet 会将View 视图对象返回给用户

    关键词

    1.DispatcherServlet

    2.handlermapping

    3.handlerAdapter

    4.ModelAndView

    5.viewResolver

    6.View

    HelloController类 测试2

     @RequestMapping("/hello2")
        public ModelAndView hello(HttpServletRequest req){
    //        System.out.println("hello springmvc。。。");
                ModelAndView mv=new ModelAndView();
                mv.setViewName("hello");
                mv.addObject("msg","success..");
            return  mv;
    
        }

     hello界面 打印msg值

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2022/8/16
      Time: 23:08
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
            Springmvc 你好鸭~
    ${msg}
    
    

    效果图

     

    三、Springmvc常用注解及返回处理

     接口类

    1. package com.zking.oa.biz;
    2. import com.zking.oa.model.Book;
    3. import com.zking.oa.util.PageBean;
    4. import java.util.List;
    5. import java.util.Map;
    6. /**
    7. * @author 锦鲤
    8. * @site www.lucy.com
    9. * @company xxx公司
    10. * @create  2022-08-13 19:17
    11. */
    12. public interface BookBiz {
    13. int deleteByPrimaryKey(Integer bid);
    14. //分页
    15. List listPager(Map map, PageBean pageBean);
    16. Book selectByPrimaryKey(Integer bid);
    17. 模糊查询 通过in 查询,如果说参数是非实体类(book)那么急的加上注解@param 是collection属性的
    18. List selectByIn( List bookIds) ;
    19. int insert (Book record);
    20. int insertSelective (Book record);
    21. int updateByPrimaryKey(Book record);
    22. int updateByPrimaryKeySelective(Book record);
    23. }

     bookmapper.java

    1. package com.zking.oa.mapper;
    2. import com.zking.oa.model.Book;
    3. import java.util.List;
    4. import java.util.Map;
    5. /**
    6. * @author 锦鲤
    7. * @site www.lucy.com
    8. * @company xxx公司
    9. * @create  2022-08-13 19:23
    10. */
    11. public interface BookMapper {
    12. int deleteByPrimaryKey(Integer bid);
    13. int insert(Book record);
    14. int insertSelective(Book record);
    15. Book selectByPrimaryKey(Integer bid);
    16. int updateByPrimaryKeySelective(Book record);
    17. int updateByPrimaryKey(Book record);
    18. // selectByIn
    19. List selectByIn(List bookIds);
    20. // 利用第三方插件进行分页
    21. List listPager(Map map);
    22. }

    bookController类

    1. package com.zking.oa.controller;
    2. import com.zking.oa.biz.BookBiz;
    3. import com.zking.oa.model.Book;
    4. import com.zking.oa.util.PageBean;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Controller;
    7. import org.springframework.web.bind.annotation.PathVariable;
    8. import org.springframework.web.bind.annotation.RequestMapping;
    9. import javax.servlet.http.HttpServletRequest;
    10. import java.util.HashMap;
    11. import java.util.List;
    12. import java.util.Map;
    13. /**
    14. * @author 锦鲤
    15. * @site www.lucy.com
    16. * @company xxx公司
    17. * @create  2022-08-17 0:32
    18. * @RequestMapping 放在类上面 窄化路径 其实就是 包 的概念
    19. */
    20. @Controller
    21. @RequestMapping("/book")
    22. public class bookController {
    23. @Autowired
    24. private BookBiz bookbiz;
    25. //书籍的增删改查 http://localhost:8080/book/list
    26. @RequestMapping("/list")
    27. public String hello(HttpServletRequest req){
    28. System.out.println("hello springmvc。。。");
    29. PageBean pagebean=new PageBean();
    30. pagebean.setRequest(req);
    31. Map map=new HashMap();
    32. String bname= req.getParameter("bname");
    33. map.put("bname",bname);
    34. List maps=this.bookbiz.listPager(map,pagebean);
    35. req.setAttribute("lst",maps);
    36. return "hello";
    37. }
    38. @RequestMapping("/add")
    39. public String add(Book book){//增加方法
    40. this.bookbiz.insertSelective(book);
    41. return "hello";
    42. }
    43. @RequestMapping("/edit")
    44. public String edit(Book book){//修改方法
    45. this.bookbiz.updateByPrimaryKeySelective(book);
    46. return "hello";
    47. }
    48. @RequestMapping("/del/{bid}")
    49. public String del(@PathVariable("bid") Integer bid ){//删除方法
    50. this.bookbiz.deleteByPrimaryKey(bid);
    51. return "hello";
    52. }
    53. }

     实现类

    package com.zking.oa.biz;
    
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import com.zking.oa.mapper.BookMapper;
    import com.zking.oa.model.Book;
    import com.zking.oa.util.PageBean;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author 锦鲤
     * @site www.lucy.com
     * @company xxx公司
     * @create  2022-08-13 19:21
     */
    @Service
    public class BookBizImpl implements  BookBiz{
    
        @Autowired
    //    private  BookBiz bookbiz;
        private BookMapper bookmapper;
    
        public BookMapper getBookmapper() {
    
            return bookmapper;
    
        }
    
        public void setBookmapper(BookMapper bookmapper) {
            this.bookmapper = bookmapper;
        }
    
    
        @Override
        public int deleteByPrimaryKey(Integer bid) {
            return bookmapper.deleteByPrimaryKey(4);
        }
    //
    //
        @Override
        public Book selectByPrimaryKey(Integer bid) {
            return bookmapper.selectByPrimaryKey(44);
    
    
        }
    
        @Override
        public List selectByIn(List bookIds) {
            return  bookmapper.selectByIn(bookIds);
        }
    
        @Override
        public int insert(Book record) {
            return bookmapper.insert(record);
        }
    
        @Override
        public int insertSelective(Book record) {
            return bookmapper.insertSelective(record);
        }
    
        @Override
        public int updateByPrimaryKey(Book record) {
            return bookmapper.updateByPrimaryKey(record);
        }
    
        @Override
        public int updateByPrimaryKeySelective(Book record) {
            return bookmapper.updateByPrimaryKeySelective(record);
        }
    
    //
    //     public List listPager(Map map, PageBean pageBean) {
    //  pageHelper分页插件相关代码
        if(pageBean != null && pageBean.isPagination()){
                PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
            }
    
           List maps=bookMapper.listPager(map);
    
            if(pageBean != null && pageBean.isPagination()){
    //        处理查询结果的前提,是需要分页的
                PageInfo info=new PageInfo(maps);
                pageBean.setTotal(info.getTotal()+"");
            }
    
            return maps;
        }
    
    //分页
                    @Override
                    public List listPager(Map map, PageBean pageBean){
                        return bookmapper.listPager(map);
                        }
                    }
    

    四、增删改查

    常用注解:

    @conttroller

    @autopwised

    @requestmapping 

    @RequestMapping(value = "/list",method = RequestMethod.GET)
       =@GetMapping

                    @getmapping  查询方法

                    @deletemapping  删除方法

                    @putmapping增加方法

                    @postmapping 修改方法

    @pathVariable

    返回值处理

    String

    modelandview

    转发和重定向的设置

    “hello” 转发到/hello.jsp

    "redriect: /hello" 转发到....项目名/hello/     

    @RequestMapping("/add")
    public String add(Book book){//增加方法
           this.bookbiz.insertSelective(book);
         return  "redirect:book/list";
    
       }

    bookController类

    package com.zking.oa.controller;
    
    import com.zking.oa.biz.BookBiz;
    import com.zking.oa.model.Book;
    import com.zking.oa.util.PageBean;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import javax.servlet.http.HttpServletRequest;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author 锦鲤
     * @site www.lucy.com
     * @company xxx公司
     * @create  2022-08-17 0:32
     * @RequestMapping 放在类上面 窄化路径 其实就是 包 的概念
     */
    
    @Controller
    @RequestMapping("/book")
    public class bookController {
        @Autowired
        private BookBiz bookbiz;
    
        //书籍的增删改查 http://localhost:8080/book/list
        @RequestMapping(value = "/list",method = RequestMethod.GET)
        @GetMapping
        public String hello(HttpServletRequest req){
            System.out.println("hello springmvc。。。");
            PageBean pagebean=new PageBean();
            pagebean.setRequest(req);
            Map map=new HashMap();
           String bname= req.getParameter("bname");
           map.put("bname",bname);
          List maps=this.bookbiz.listPager(map,pagebean);
           req.setAttribute("lst",maps);
            return  "hello";
    
        }
        @RequestMapping("/add")
        public String add(Book book){//增加方法
               this.bookbiz.insertSelective(book);
             return  "redirect:book/list";
    
           }
        @RequestMapping("/edit")
        public String edit(Book book){//修改方法
            this.bookbiz.updateByPrimaryKeySelective(book);
            return  "redirect:book/list";
    
        }
    
        @RequestMapping("/del/{bid}")
        public String del(@PathVariable("bid") Integer bid ){//删除方法
            this.bookbiz.deleteByPrimaryKey(bid);
            return  "redirect:book/list";
    
        }
    
    
    
    
    }

     主界面

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2022/8/17
      Time: 1:20
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        主界面
    
    
            查询所有
            增加
            删除
            修改
    
    
    

    效果图


  • 相关阅读:
    MySQL数据库干货_16—— SQL99标准中的查询
    高速信号PCB布局怎么布?(电子硬件)
    系统升级丨酷雷曼4大功能优化,轻松完成VR全景制作
    计算机毕业设计django基于python街区医院管理系统
    MyBatis-Plus联表查询的短板,终于有一款工具补齐了
    tcp记录
    浅谈基于PLC和Modbus的配电室现场环境监控系统设计及产品选型
    Pycharm安装Tensorflow踩坑
    【华为机试真题 JAVA】水仙花数 Ⅰ-100
    Spring Boot Actuator介绍
  • 原文地址:https://blog.csdn.net/qq_66924116/article/details/126375651