(一)SpringMVC一个简单例子(打印HelloWorld!)

简介:在MVC框架中,用户的请求直接与 C(控制器)交互,控制器再把请求进行分发,分发给 M(模型,也可以说是数据),再选择V(视图)把用户要获取的数据展示出来


0.web应用的目录树:

红色是要关注的地方。



1.SpringMVC中的DispatcherServlet(用于调度控制 用户请求)

在许多 MVC框架中,都包含一个用于调度控制的Servlet。Spring MVC也提供了一个名为 org.springframework.web.servlet.DispatcherServlet 的 Servlet 充当前端控制器。所有的请求都围绕这个 DispatcherServlet 来分派。


DispatcherServlet 是一个Servlet (它继承自 HttpServlet基类),因此使用时需要把它配置在 Web 应用的 web.xml文件中。

下面是 web.xml的配置:


*由上图:本工程的 spring配置文件的名字为: srpingmvc-config.xml 


2. 基于Controller接口的 Handle 的编写:

DispatcherServlet 在 Spring 当中充当一个前端控制器的角色,它的核心功能是分发请求。请求会被分发给对应处理的 Java类,Spring MVC中称为 Handle。

开发一个 Handle 的方法是 实现 org.springframework.web.servlet.mvc.Controller接口

而实现 Controller接口 就必须实现一个handleRequest 方法:

ModelAndView handleRequest(HttpServletRequest request,HttpServletRespone)throws Exception

(Controller接口的实现类)可以通过 handleRequest方法传递的参数 来 访问对应请求 HttpServletRequest 和 HttpServletRespone 对象。处理完请求后,必须返回一个

包含模型对象视图路径 ModelAndView 对象


3.Spring配置文件

<?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">

	<!-- 配置 Handle,映射“/hello”请求 -->
	<bean name="/hello" class="com.springmvc.HelloController"></bean>
	
	<!-- (处理映射器)将(上面)bean的name作为url进行查找,需要再配置Handle时指定name(即url) -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	
	<!-- SimpleControllerHandlerAdapter是一个(处理适配器),所有处理适配器都要实现HandleAdapter接口 -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
	
	<!-- 视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>
第12,15,18行是固定的。作用是配置 处理映射器,处理适配器,视图解析器。

第9 行是配置自己写的Handle也即控制器(即 HelloController)


4.控制器(MVC中的C)

HelloController.java:

package com.springmvc;

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 HelloController implements Controller {
	
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		
		/*创建返回的 ModelAndView对象,该对象通常包含了(返回视图名)和(模型的名称),以及模型对象*/
		ModelAndView mv = new ModelAndView();
		
		/*添加模型数据*/
		mv.addObject("message", "HelloWorld!");
		
		/*设置(逻辑视图名),视图解析器会根据该名字解析到具体的视图页面*/
		mv.setViewName("/WEB-INF/content/welcome.jsp");
		return mv;
	}



控制器必须实现 (Controller接口)里的 handleRequest 方法。

第20行:往控制器里加信息(可被调用的对象)

23行:设置此控制器 调用的界面(View)。此处为放在目录 /WEB-INF/content/ 下的 welcome.jsp



5.视图(View)

welcome.jsp:


红框处为KL表达式。作用为打印 message的值。


启动服务器后,输入服务器地址 (http://localhost/XXX/XXX/XXX) 后的结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值