javaweb

SpringMvc的组成:jsp,JavaBean,servlet

  • 可以使用Spring所提供的功能
  • 提供了前端控制器DispatcherServlet,不需要细化Servlet
  • 执行校验

简单的MVC程序

一 需要的包:

四个spring核心包,一个servlet.

image-20210414092052598

二 前端控制器,编写XML控制Servelet

主要作用:DispatcherServlet,拦截中转作用

前沿知识:servlet标签和servlet-mapping 理解
  1. 先执行
<url-pattern>/</url-pattern> //拦截一切文件, url-pattern是你访问的url
  1. 再去找
<servlet-name>springmvc</servlet-name> //名字叫这个的

3.映射到

<servlet-name>springmvc</servlet-name> //找到servlet,这里有点像bean

4.映射到DispatcherServlet

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      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"
	id="WebApp_ID" version="3.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-config.xml</param-value>
</init-param>

</servlet>
  
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>

指定配置文件目录

给这个bean的属性初始化赋值的,dispathcerservlet里有个contextConfigLocation

,如果没写init-param:默认去web-inf 去找类似于

sevletName-sevlet.xml

三 编写 Controller 处理器

package com.itheima.ioc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class FirstController implements Controller {

	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		// TODO Auto-generated method stub
//		创建一个模型对象modelAndView
		ModelAndView modelAndView=new ModelAndView();
		//给模型对象添加属性
		modelAndView.addObject("msg", "this is 1830090110");
		//设计逻辑视图名字
		modelAndView.setViewName("/WEB-INF/jsp/first.jsp");
		return modelAndView;
	}

}

四 编写SPringMVC处理器

<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-4.3.xsd">
 
 <bean name="/firstController" class="com.itheima.ioc.FirstController"/>
 
   
   
   
   
    </beans>

访问/firstController,映射到FirstController

五 创建JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 ${msg}
</body>
</html>

叙述MVC相关内容

image-20210416181942471

瞎子理论:MVC工作流程

把用户所用的客户端当成一个瞎子,只能看到一个黑白红的东西.

用户画一个黑白的图,发送到Spring MVC中Spring MVC家开始工作

  1. 到了mvc家门口给他拦住了(DispatchServlet),在报到处(HandlerMapping)看看你这个画属于什么种类,
  2. 分析完种类,告诉看大门的,发送到哪个加彩色的地方报到处(HandlerAdapter)
  3. 进入报到处,分析是什么需要哪几种颜色,进入画室(Handler)处理
  4. 染完颜色,又回来了,再次到加彩色的地方报道,然后回到大门,准备出去,
  5. 因为客户只能看黑白红的画,所以经过画室处理{ViewRolver),把所有加了的颜色变成了红白黑
  6. 拿到瞎子那边!

DispatcherServlet :大门

这个主要是需要上文的配置,上边已经有了这里不做描述了

Controller和 RequestMapping注解类型

主要是对comtroller的修改

package com.itheima.ioc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/hello")
public class FirstController {
	@RequestMapping(value = "/firstController")
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		// TODO Auto-generated method stub
//		创建一个模型对象modelAndView
		ModelAndView modelAndView=new ModelAndView();
		//给模型对象添加属性
		modelAndView.addObject("msg", "this is 1830090110");
		//设计逻辑视图名字
		modelAndView.setViewName("/WEB-INF/jsp/first.jsp");
		return modelAndView;
	}

}

<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-4.3.xsd
        	http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 
 <!-- <bean name="/firstController" class="com.itheima.ioc.FirstController"/> -->
<context:component-scan base-package="com.itheima.ioc" />
   
   
    </beans>

上边是对于springmvc配置文件的修改

所需要的包

image-20210416201239199

现在来看上边的问题,实际上就是起了个bean别名,安排在controll

RequestMapping

当value是唯一属性时可以省略属性名

视图解析器

<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-4.3.xsd
        	http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-4.3.xsd">
 
 <!-- <bean name="/firstController" class="com.itheima.ioc.FirstController"/> -->
<context:component-scan base-package="com.itheima.ioc" />
   <!-- 定义视图解析器,便于在之后controller方法中不用再写复杂的名字 -->
   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"></property>
  <property name="suffix" value=".jsp"></property>
   </bean>
    </beans>
package com.itheima.ioc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
@RequestMapping(value = "/hello")
public class FirstController {
	@RequestMapping(value = "/firstController")
	public String handleRequest(HttpServletRequest arg0, HttpServletResponse arg1,Model model) throws Exception {
		// TODO Auto-generated method stub
//		创建一个模型对象modelAndView
		
		//给模型对象添加属性
		model.addAttribute("msg", "this is 1830090110");
		//设计逻辑视图名字
	
		return "first"; //视图解析器应用在这个地方
        //除此之外,这里还可以有
        //redirect重定向
        //return "redirect:方法名"
        //forward 动态转发
        //return "forward:方法名"
		
	}

}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐