SpringMVC
SpringMVC快速入门
1.Spring MVC的介绍
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的 Servlet进行Web开发。
Servlet的弊端: 1、Servlet的编码问题 请求-响应(内置编码过滤器)
2、无法自动封装参数。(3种参数传递,类型的自动转换+封装)
3、doXXX方法,oper=(根据自身需要任意声明函数)
4、切换WEB工程的版本,Servlet配置复杂。
支持XML和注解 2.5 以上。
2. MVC设计模型
MVC 是一种著名的设计模式,特别是在 Web 应用程序领域。模式全都是关于将包含业务数据的模块与显示模块的视图解耦的。这是怎样发生的?视图(例如,JSP 页面)怎样能够与其模型(例如,包含数据的 JavaBean)解耦?记得这句格言么?一个层次的重定向几乎可以解决计算机业中的所有问题。确实,在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器。控制器将接收请求,执行更新模型的操作,然后通知视图关于模型更改的消息。依赖于模型的状态并且依赖于请求的控制器可以决定要显示哪个视图。
3. Spring MVC的优势
1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
2、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;
3、和Spring 其他框架无缝集成,是其它Web框架所不具备的;
4、可适配,通过HandlerAdapter可以支持任意的类作为处理器;
5、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
6、功能强大的数据验证、格式化、绑定机制;
7、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;
8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
9、RESTful风格的支持、简单的文件上传、约定优于配置的契约式编程支持、基于注解的零配置支持等等。
4. MVC三元组的概念
MVC (Model-View-Controller):
- Model:组件等价于 实体层 + 业务逻辑层 + 持久层
- View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
- Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图。
5. SpringMVC第一个小例子
5.1配置xml实现
5.1.1创建Controller层类
public class XmlController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv=new ModelAndView(); mv.addObject("name","张三"); mv.setViewName("/index"); return mv; } }
5.1.2编写web.xml文件
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--读取spring-mvc.xml文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
5.1.3编写spring-mvc.xml文件
<bean id="/xmlController" class="com.springmvc.controller.XmlController"></bean>
5.1.4编写index.jsp页面
<body> <H1>Hell SpringMVC</H1> </body>
5.1.5页面
5.2注解方式实现
5.2.1编写Controller层类
@Controller //标识该类为一个控制器 public class HelloWorldController{ @Autowired InvoicingService invoicingService; //RequestMapping设置处理器方法与用户请求的URL直接的映射关系 @WebServlet @RequestMapping("/hello") public String toIndex(){ return "index"; } }
5.2.2编写web.xml文件
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--读取spring-mvc.xml文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--spring和MyBatis整合的核心配置--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:application-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
5.2.3编写spring-mvc.xml文件
<!--推荐使用注解方式--> <!--配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="jsp/"></property> <!--return "index"======>/jsp/index.jsp--> <property name="suffix" value=".jsp"></property> </bean> <!--开启MVC的注解配置--> <mvc:annotation-driven/> <!--包扫描器:扫描 MVC中的注解--> <context:component-scan base-package="com.springmvc"/> <bean id="/xmlController" class="com.springmvc.controller.XmlController"></bean> </beans>
5.2.4编写index.jsp页面
<body> ${name} <H1>Hell SpringMVC</H1> </body>
5.2.5页面
SpringMVC高级配置
1. SpringMV执行流程
2. SpringMVC静态资源拦截
2.1方式一:spring-mvc.xml
<!--利用DefaultServlet放行资源-->
<mvc:default-servlet-handler/>
2.2方式二:spring-mvc.xml
<!--从spring3.0.4版本提供资源放行方式--> <mvc:resources mapping="/**" location="/img"/>
2.3方式三:web.xml
<!--基于DefaultServlet:默认访问前会执行DefaultServlet--> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
2.4页面显示
原文地址:https://www.cnblogs.com/1314Justin/p/11812505.html
- Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、
- Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
- Kafka的生产者和消费者代码解析
- Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
- 作为完美主义者(强迫症)如何将linux的eth1网卡修改为eth0网卡
- 【入门篇】一个小白在Jetson TX2上安装caffe的踩坑之旅
- 【入门篇】Jetson TX2深度学习Inference初体验
- zeromq的安装,部署(号称最快的消息队列,消息中间件)
- OpenDaylight新建HelloWorld工程并集成版本
- 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!
- 机器学习:单词拼写纠正器python实现
- java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown
- Server Tomcat v7.0 Server at localhost failed to start.
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释