Spring MVC 入门总结
来源:互联网 发布:奢侈品复刻1:1淘宝 编辑:程序博客网 时间:2024/05/16 12:21
spring mvc 是什么
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的
spring mvc 流程图
个人理解的流程(如有不对请指正)
首先在web.xml中配置DispatcherServlet,拦截客户端的http请求,在根据自己的spring mvc配置文件 找到相应的controller,对请求进行相应的处理后,返回ModelAndView类对象,DispatcherServlet生成相应的model模型,把model传入相应的view视图,实现显示。
核心类与接口
DispatcherServlet – 前置控制器
HandlerMapping接口 – 处理请求的映射
HandlerMapping接口的实现类
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
HandlerAdapter接口 – 处理请求的映射
AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
Controller接口 – 控制器
HandlerInterceptor 接口–拦截器
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
View接口
JstlView类
LocalResolver接口
HandlerExceptionResolver接口 –异常处理
SimpleMappingExceptionResolver实现类
ModelAndView类
常见的注解
@Controller 负责注册一个bean 到spring 上下文中
@RequestMapping 控制器指定可以处理哪些 URL 请求
@RequestBody 用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
@ResponseBody 用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
@ModelAttribute
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法
在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
@RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
@ExceptionHandler 注解到方法上,出现异常时会执行该方法
@ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常
spring mvc用户登录入门案例
业务逻辑:等index.jsp中填写用户信息,然提交到后台的/hello控制器中进行校验,检验通过后跳转到successs.jsp,检验失败跳转到error.jsp中
第一步导入要使用的jar包
第二步在WEB-INF下建立文件夹jsp,再jsp文件夹中新建successs.jsp和error.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><p>hello spring mvc</p> ${map.name}</body></html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> ${message1 }</body></html>
第三步配置web.xml
<?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"> <display-name>springMvc</display-name> <!-- 配置springmvc的文件 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加载src目录下的springmvc的配置文件 srpingmvc-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 拦截所有的请求--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>
第四步 配置src目录下的springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- scan the package and the sub package --> <context:component-scan base-package="com.springMVC.test"/> <!-- don't handle the static resource --> <mvc:default-servlet-handler /> <!-- if you use annotation you must configure following setting --> <mvc:annotation-driven /> <!-- configure the InternalResourceViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <!-- 前缀 --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- 后缀 --> <property name="suffix" value=".jsp" /> </bean></beans>
第五步建立控制器hellController.java
在src目录下的com.springMVC.test包下创建类hellController.java
package com.springMVC.test;import java.util.HashMap;import java.util.Map;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;/*★★★★★★这里导包的时候一定要对 ,,不然使用的ModelAndView对象是不正确的*/import org.springframework.web.servlet.ModelAndView; @Controller@RequestMapping("/c")public class helloController { @RequestMapping("/hello") public String sayHello(@RequestParam("username")String userName,@RequestParam("password")String password){ if(userName.equals("alleged")&&password.equals("root")){ System.out.println(userName+password); return "successs"; }else{ System.out.println(userName+password); return "error"; } } //带数据返回}
最后一步建立主页index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="style.css" /></head><body> <form method="post" action="/springMvc/c/hello"> <input type="text" required="required" placeholder="用户名" name="username"></input> <input type="password" required="required" placeholder="密码" name="password"></input> <button class="but" type="submit">登录</button> </form> <a href="contacts.html">contacts</a></body></html>
- Spring MVC 入门总结
- Spring MVC入门知识总结
- Spring MVC入门知识总结
- Spring Web MVC入门总结
- spring MVC 配置入门总结(1)
- 【spring】spring MVC入门
- 【Spring】Spring MVC入门
- Spring MVC 入门
- Spring MVC入门
- Spring MVC 入门
- spring mvc入门
- spring mvc入门
- Spring MVC 入门
- 入门spring MVC
- Spring MVC 入门
- Spring MVC 入门 @ MultiActionController
- spring mvc入门
- Spring MVC入门
- java代码开发细节(根据Sonar提示的问题总结归纳的)
- centos7安装nginx
- VMware与宿敌Amazon一笑泯恩仇:重新定义混合云?
- 关于内部类的个人总结
- okhttp-utils的封装之okhttp的使用
- Spring MVC 入门总结
- 对象存入session中时,未序列化报错的问题
- use after free 引起KE
- 在Androidstudio中查看源码时,发现进入的源码没有注释
- 反编译出现internal error
- dedecms讲解
- php 桥接模式案例
- c++跨平台技术学习(三)--使用标准API
- java-基本的Socket编程-实现服务器端和客户端通信