springmvc

文章目录

一、WebMVC介绍

1、MVC是什么

MVC是一种使用视图、模型、控制器设计创建Web应用程序的模式:

Model表示应用程序核心(比如数据库记录列表)、View显示数据(数据库记录)、Controller处理输入(写入数据库记录)

2、常用的MVC框架

Struts是Java Web MVC框架中不争的王者。经过长达九年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2这些设计更精密。扩展性更强的框架,Struts受到了前所未有的挑战。

3、MVC模式的优缺点

优点:耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利软件工程化管理

缺点:没有明确的定义、不适合小型和中等规模的应用程序、增加系统结构和实现的复杂性、视图与控制器之间连接过于紧密、视图对模型数据的低效率访问、一般高级的界面工具或构造器不支持模式

4、Spring MVC简介

(1)和众多其他Web框架一样,它基于MVC设计理念,此外,它采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性。

(2)Spring MVC在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现

(3)Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是Spring MVC的总导演、总策划,它负责截获请求并将其分派给相应的处理器处理。
二.springmvc的体系结构
在这里插入图片描述
三.配置DispatcherServlet类
1.maven需要添加的依赖

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.1</version>
    </dependency>
    
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

2.在WEB-INF下面的web.xml中配置DispatcherServlet类

<servlet>
<servlet-name>dispatcher</servlet-name>
<servler-class>org.springframework.web.servlet.DispatcherServlet</servler-class>
<!--配置文件默认找寻的位置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher.xml</param-value>
<!--配置容器初始化DispatcherServlet-->
<!--这里不写的时候默认是-1-->
<load-on-startup>1</load-on-startup>
</init-param>
</servlet>
<!--配置拦截路径-->
<servlet-mapping>
	<servlet-name>dispatcher</servler-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>
<!--这里再配置默认的jsp页面-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

文件默认寻找的位置文件dispatcher.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!--配置包扫描路径-->
<context:component-scan base-packeage="包路径">
<!--配置视图解析器,用于将Handler方法中返回的视图名解析成真正可以展示的页面-->
<mvc:view-resolvers>
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<!--这里的prefix是拼上前缀,suffix是拼上后缀名.jsp-->
		<property name="prefix" value=""/>
		<property name="suffix" value=".jsp">
	</bean>
</mvc:view-resolvers>
	</beans>

index.jsp中的代码

<a href="test/hello">SpringMVC测试</a>

    <a href="nihao/apple">SpringMVC apple测试</a>

    <a href="hello/google">SpringMVC google测试</a>

    <a href="sihuoge">测试ResponseBody</a>

在HelloAction中做处理

/**
 * 通过@Controller标注的类会被SpringIOC容器扫描和管理
 */
@Controller
public class HelloAction {

    /**
     * 定义一个Handler, 可以处理http://localhost:8080/springmvc/test/hello这个请求
     * @return
     */
    @RequestMapping("/test/hello")
    public String hello() {
        System.out.println("进入HelloAction.hello()方法");
        return "hello";
    }

    /**
     * 处理请求,并携带数据跳转到页面
     * @param mv
     * @return
     */
    @RequestMapping("/nihao/apple")
    public ModelAndView hello1(ModelAndView mv) {
        System.out.println("进入HelloAction.hello1()方法");
        mv.setViewName("hello");
        mv.addObject("key", "apple");
        return mv;
    }

    @RequestMapping("/hello/google")
    public String hello2() {
        System.out.println("进入HelloAction.hello2()方法");
        return "hello";
    }

    /**
     * 通过@ResponseBody注解标注的方法, 不会被解析成视图, 而是直接将返回的内容本身输出给调用方(浏览器、其他服务、抓包工具)
     * @return
     */
    @ResponseBody
    @RequestMapping("/sihuoge")
    public String test() {
        return "sihuo";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值