81.【SpringMVC】(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 81.【SpringMVC】

4.在WEB-INF的包下进行创建jsp/hello.jsp

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

5.配置控制层的实现

package com.Jsxs.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里我们先导入Controller接口
public class helloController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        // ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();
        //封装对象,放在ModelAndView中
        mv.addObject("msg","HelloSpringMVC");
        mv.setViewName("hello");
        return mv;
    }
}

6.注意如果出现404和500的错误

  1. 首先把继承的包导入到对应的空间中的lib目录中去

  1. 如果出现500的错误,显示不能创建bean或者什么什么的,这边建议直接另起一个项目,重新建立一个已经配置的web文件。(就是模板)

3.可以不创建新的web模板,我们只需要在创建Model的时候,我们应该对lib目录下进行添加如下几个内容,不能多。

(三)、SpringMVC执行原理

1.中心控制器:

SpringMVC的web框架围绕DispatcherServlet设计,DispatcherServlet的作用就是将请求分发到不同的处理器、从spring2.5开始,用户可以采用基于注解的controller声明方式。

2.原理解析(左边部分不用我们操作)

(1).DispatcherServlet

DispatcherServlet表示前置控制器,是整个SpringMVC的控制核心用户发出请求,DispatcherServlet接受请求并拦截请求。(映射就是)

  • 我们假设请求的url为:
  • http://localhost:80/SpringMVC_03_Hello_war/hello
  • 如上的url可以分为三部分
  • http://http://localhost:80 - - - 服务器域名
  • SpringMVC_03_Hello_war - - - 部署在服务器上的web站点
  • hello - - - - 表示控制器
  • 通过分析,如上url表示为 : 请求位于服务器 localhost:80 上的 SpringMVC_03_Hello_war站点的hello控制器
(2).HandlerMapping

HandlerMapping为处理器映射,DispatcherServlet调用HandlerMapping,HandlerMapping根据url查找 Handler

(3).HandlerExpecution

HandlerExpecution表示具体的Handler,其主要作用是根据url查找控制器,如url被查找控制为 : hello

【4】.返回给DispatcherServlet

HandlerExpecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等

(5).HandlerAdpate

HandlerAdpate表示处理适配器,其按照特定的规则去执行Handler

(6).Handler让具体的Controller执行
(7).Controller将拘役的执行信息返回给HandlerAdpate,如Model和View
【8】.HandlerAdpter将试图逻辑名或模型传递给DispatcherServlet.
(9).DispatcherServlet调用视图解析器(VierResolver)来解析HandlerAdpater传递的逻辑视图名
视图解析器的作用:
1.获取Model和view的数据
2.解析model和view的视图名字
3.拼接试图的名字,找到具体的视图

(10).视图解析器将解析的逻辑视图传给DispatcherServlet
(11).DispatcherServlet根据视图解析器解析视图的结果,调用器具图的视图。
(12).最终视图呈现给用户

(四)、深入了解SpringMVC

(1).在web.xml配置DispatcherServlet 核心
1.配置DispatcherServlet 核心
 <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
2.配置DispatcherServlet 映射
 <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
3.绑定spring文件    
 <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
 </init-param>
 4.启动级别: 就是让他和服务器进行同步
<load-on-startup>1</load-on-startup>
<?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">
<!--  1.  配置DispatcherServlet 核心-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--  3.      DispatcherServlet要绑定Spring的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
<!--   4.     启动级别: 就是让他和服务器进行同步-->
        <load-on-startup>1</load-on-startup>
    </servlet>
<!--  2.
    在SpringMVC中,
    / 只匹配所有的请求,不会去请求jsp
    /* 匹配所有的请求,会请求jsp
    在springMvc中 我们尽量写/
-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
(2).配置Spring文件
1.配置处理器映射器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
2.配置处理器适配器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
3.配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--   前缀     -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
<!--   后缀     -->
        <property name="suffix" value=".jsp"/>
</bean>
4.配置bean
<bean id="/test" class="com.Jsxs.controller.helloController"/>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 处理器映射器:  (BNUHM)  对应图 【2】-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 处理器适配器    对应 图 【5】 -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 视图解析器   对应 图 【9】-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--   前缀     -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
<!--   后缀     -->
        <property name="suffix" value=".jsp"/>
    </bean>
<!--  因为处理器映射器需要借助一个bean , 所以我们应该配置一个bean-->
    <bean id="/test" class="com.Jsxs.controller.helloController"/>
</beans>
(3).配置控制层(Controller)
1.继承接口Controller接口,重写处理请求的方法
2.创建ModelAndView
 ModelAndView modelAndView = new ModelAndView();
3.为ModelAndView进行添加业务需求
modelAndView.addObject("msg",result);
4.进行视图的跳转
 modelAndView.setViewName("test");
5.返回视图
package com.Jsxs.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//  对应 图 【6】
public class helloController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//       创建ModelAndView
        ModelAndView modelAndView = new ModelAndView();
//        业务代码
        String result="你好啊 小明";
       modelAndView.addObject("msg",result);
//       视图进行跳转
        modelAndView.setViewName("test");
        return modelAndView;
    }
}

相关文章
|
JSON JavaScript 前端开发
|
缓存 前端开发 Java
|
前端开发 Java 程序员
|
前端开发 JavaScript Java
|
1月前
|
Java 数据库连接 数据库
SpringMVC(2)
SpringMVC(2)
|
5月前
|
前端开发 Java 数据格式
|
4月前
|
前端开发 Java 数据格式
SpringMVC(三)
SpringMVC(三)
17 0
|
4月前
SpringMVC(一)(3)
SpringMVC(一)(3)
28 0
|
6月前
|
存储 JSON 安全
SpringMVC 02
SpringMVC 02
30 0
|
6月前
|
存储 JSON 前端开发