• springmvc(mvc、springmvc、springmvc入门程序)


    1、MVC

    (1)什么是mvc(一种软件设计规范)

    M:数据模型(dao、service),提供要展示的数据,包含数据和行为

    V:视图(jsp),负责进行模型的展示,一般就是用户界面

    C:控制器(servlet),接收用户请求,委托给模型进行处理,处理完毕后返回模型数据给视图

    (2)历史:

    Model1时代:视图层+模型层,jsp任务过重

    Model2时代:视图+控制+模型,引入了servlet

    2、springmvc

    (1)处理流程

    (2)特点

    轻量级

    高效,基于请求和响应

    与spring无缝结合(是spring的一部分)

    约定优于配置(约定的这么做就这么做)

    RESTful、数据验证、格式化

    简单灵活

    3、入门程序

    (1)导包:

     (2)注册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.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup><!--启动服务器即创建-->
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

     /* 拦截所有 jsp js png .css 真的全拦截 建议不使用
     *.action *.do 拦截以do action 结尾的请求 肯定能使用 ERP 
     / 拦截所有 (不包括jsp) (包含.js .png.css) 强烈建议使用 前台 面向消费者 www.jd.com/search /对静态资源放行

    (3)处理器:

    @Controller
    public class StudentController {
        @RequestMapping(value = "/item/itemlist.action")//请求映射
        public ModelAndView itemList(){
            List<Student> list = new ArrayList<Student>();
            list.add(new Student("20200326","zhai","2020-03-26","329"));
            ModelAndView mav = new ModelAndView();//数据
            mav.addObject("itemList", list);
            mav.setViewName("/WEB-INF/jsp/itemList.jsp");
            return mav;
        }
    }

    因为用到了注解,需要书写一个配置文件:开启注解扫描@Controler @Service

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.0.xsd">
            <context:component-scan base-package="pers.zhb"/>
    </beans>

    (4)POJO和页面:

    POJO:

    public class Student implements Serializable {
        private static final long serialVersionUID = 1L;
        private String studentno;
        private String sname;
        private String birthday;
        private String point;
        public Student(String studentno, String sname, String birthday, String point) {
            this.studentno = studentno;
            this.sname = sname;
            this.birthday = birthday;
            this.point = point;
        }
    
        public String getStudentno() {
            return studentno;
        }
    
        public void setStudentno(String studentno) {
            this.studentno = studentno;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname;
        }
    
        public String getBirthday() {
            return birthday;
        }
    
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
    
        public String getPoint() {
            return point;
        }
    
        public void setPoint(String point) {
            this.point = point;
        }
    }

    jsp页面:

    <table width="100%" border=1>
    <tr>
        <td>学号</td>
        <td>姓名</td>
        <td>出生日期</td>
        <td>分数</td>
    </tr>
    
    <c:forEach items="${itemList}" var="item">
    <tr>
        <td>${item.studentno }</td>
        <td>${item.sname }</td>
        <td>${item.birthday}</td>
        <td>${item.point }</td>
    </tr>
    </c:forEach>

    4、maven创建web程序(servlet)

    (1)创建一个父项目:

     在配置文件中导入依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>pers.zhb</groupId>
        <artifactId>springmvc_study</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
    </project>

    (2)创建子项目

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>springmvc_mytest</artifactId>
            <groupId>pers.zhb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>springmvc_01</artifactId>
    </project>

    (3)创建一个Servlet:

       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String method=request.getParameter("method");
            if(method.equals("add")){
                request.getSession().setAttribute("seg","add方法执行了!!!");
            }
            if(method.equals("update")){
                request.getSession().setAttribute("seg","update方法执行了!!");
            }
            request.getRequestDispatcher("/result.jsp").forward(request,response);
        }

    (4)页面:

    在index.jsp中创建一个form,点击提交后访问servlet:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
         <form action="${pageContext.request.contextPath}/hello" method="get">
            <input type="text" name="method">
            <input type="submit">
         </form>
      </body>
    </html>

    在servlet中处理后,请求转发到另外一个jsp页面,该页面取出servlet存储在session中的数据:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
      ${seg}
    </body>
    </html>

    5、maven创建入门程序

    (1)创建父项目和子项目

    父配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>pers.zhb</groupId>
        <artifactId>springmvc_2024</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>mvc_01</module>
        </modules>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.5.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
    </project>

    子项目配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>springmvc_2024</artifactId>
            <groupId>pers.zhb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>mvc_01</artifactId>
    </project>

    (2)在web.xml配置文件中配置前端控制器:是springmvc的核心

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <!-- 前端控制器 -->
        <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.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup><!--启动服务器即创建-->
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

    所有的请求都会经过前端控制器,也可以加一些限制条件,对请求是否经过进行限制

    /:匹配所有的请求,不包括jsp

    /*:匹配所有的请求,包括jsp

    (3)书写处理器代码(返回模型视图,模型存储数据,视图负责页面),还可以在里面调用业务层:

    public class HelloController implements Controller {
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest,
                                          HttpServletResponse httpServletResponse) throws Exception {
            ModelAndView modelAndView=new ModelAndView();
            modelAndView.addObject("msg","HelloSpringMVC");
            modelAndView.setViewName("hello");//hello.jsp
            return modelAndView;
        }
    }

    返回的mv交给视图解析器进行处理

    (4)书写配置文件(springmvc.xml)和页面:

    先配置处理器映射器和处理器适配器,然后配置视图解析器(配置前缀和后缀,也就是拼接视图的路径)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            <property name="prefix" value="/"></property><!--前缀和后缀-->
            <property name="suffix" value=".jsp"></property>
        </bean>
        <bean id="/hello" class="pers.zhb.controller.HelloController"></bean>
    </beans>

    页面:取出数据

    <%--
      Created by IntelliJ IDEA.
      User: zhai
      Date: 2020/4/29/0029
      Time: 20:50
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    ${msg}
    </body>
    </html>

    (5)测试:

    (6)注意:在以上步骤书写完毕后,访问的话会出现404

     需要在WEB-INF目录下新建一个文件夹,然后点击上面的小加号,将jar包放到文件夹里面

    (7)流程

    用户请求先经过前端控制器,然后前端控制器调用配置文件,处理器映射器映射到hello。处理器适配器找到pers.zhb.controller.HelloController类去处理,然后返回一个mv给视图解析器,并将结果返回给前端控制器

  • 相关阅读:
    hadoop之 hadoop日志存放路径
    grpc的数据包监控
    HTTP2 概述
    gRPC的简单Go例子
    win下环境变量的设置
    Go的pprof使用
    graphviz
    学习Golang的步骤建议
    golang 的 sync.WaitGroup
    【转】golang的channel的几种用法
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12577602.html
Copyright © 2020-2023  润新知