1.springmvc入门
对比struct
同:
它们都是表现层框架,都是基于 MVC 模型编写的。
它们的底层都离不开原始 ServletAPI。
它们处理请求的机制都是一个核心控制器。
异:
Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
Spring MVC 是基于方法设计的,而 Struts2 是基于类,Struts2 每次执行都会创建一个动作类。所以 Spring MVC 会稍微比 Struts2 快些。
Spring MVC 使用更加简洁,同时还支持 JSR303, 处理 ajax 的请求更方便
SpringMVC是基于 Servlet 的技术
基于java实现MVC设计模式的web框架
通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口
在当今互联 的开发中, 随着手 兴起 Web 页面大部分
采用 ja 请求,它 之间的交互只需要 JSON 数据
对于 Spring MVC 其最大 特色是结构松散,比如
乎可 SpringMVC 中使用各类 ,包括 JSON JSP XML PDF ,所以它能够满足手机端、页面端各类请求
1.1架构
前端控制器(DispatcherServlet) Spring MVC 框架是围绕着 DispatcherServlet 工作
请求到处理器映射(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
处理器或页面控制器(Controller)
验证器( Validator)
命令对象(Command 请求参数绑定到的对象就叫命令对象)
表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
入门程序
1.maven依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
2.web.xml配置前端控制器
<?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">
<!--配置 Spring ioc 配置文件路径-->
<!--1.配置文件路径设置
告诉 SpringMVC pring IoC 的配
文件在哪里,这样 Spring 就会找到这些配置文件去加载它们。如果是多个配置文件,
可以使用逗号将它们分隔开来,并且它还能支持正则式匹配,进行模糊匹配,这样
就更加灵活,其默认值为/WEB-INF applicationContext.xml
-->
<!--<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>-->
<!--配置spring的监听器,默认加载WEB-INF目录下的applicationContext.xml配置文件
可以在整个 Web 工程前后加入自定义代
码,所以可以在 Web 工程初始化之前,它先完成对 Spring IoC 容器的初始化,也可
以在 Web 工程关闭之时完成 Spring IoC 容器的资源进行释放。
-->
<!--<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>-->
<!--配置前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!--资源路径下的springmvc.xml-->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 配置servlet启动时加载对象 启动服务器就创建该对象-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--拦截全部路径-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3.springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--4.注解扫描,只扫描controller-->
<context:component-scan base-package="cn.zust.controller"/>
<!--配置视图解析器
前缀和后缀,这样视图就知道去 Web 程的
/WEB_INF/Page 文件夹中找到对应的 JSP 文件作为视图响应用户请求。-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB_INF/Page"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--如果有配置数据库事务,需要开启 注解事务的,需要开启这段代码一〉
<!--
<tx:annotation- driven transaction-manager=”transactionManager” />
-->
<!--springmvc注解支持-->
<mvc:annotation-driven>
</mvc:annotation-driven>
</beans>
4.Controller测试
package cn.zust.controller;
import com.sun.org.apache.regexp.internal.RE;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author whai
* @Date: 2020/4/16 17:15
*/
@Controller
@RequestMapping("/text")
public class ControllerDemo {
@RequestMapping("/hello")
public String helloword(){
System.out.println("hello");
return "hello";
}
}
<%--
Created by IntelliJ IDEA.
User: whai
Date: 2020/4/17
Time: 14:02
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>
<h1>hello world!</h1>
</body>
</html>