Hello World入门

2.5.1、准备开发环境和运行环境:

☆开发工具:eclipse

☆运行环境:tomcat6.0.20

☆工程:动态web工程(springmvc-chapter2)

☆spring框架下载:

spring-framework-3.1.1.RELEASE-with-docs.zip

☆依赖jar包:

1、  Spring框架jar包:

为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB-INF/lib目录下;

2、  Spring框架依赖的jar包:

需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar;

需要添加jstl标签库支持,此处使用的是jstl-1.1.2.jar和standard-1.1.2.jar;

2.5.2、前端控制器的配置

在我们的web.xml中添加如下配置:

java代码:

Java代码  
  1. <servlet>
  2. <servlet-name>chapter2</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>chapter2</servlet-name>
  8. <url-pattern>/</url-pattern>
  9. </servlet-mapping>

load-on-startup:表示启动容器时初始化该Servlet;

url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

自此请求已交给Spring Web MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例为WEB-INF/ chapter2-servlet.xml。

2.5.3、在Spring配置文件中配置HandlerMapping、HandlerAdapter

具体配置在WEB-INF/ chapter2-servlet.xml文件中:

java代码:

Java代码  
  1. <!-- HandlerMapping -->
  2. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  3. <!-- HandlerAdapter -->
  4. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。

SimpleControllerHandlerAdapter:表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。

2.5.4、在Spring配置文件中配置ViewResolver

具体配置在WEB-INF/ chapter2-servlet.xml文件中:

java代码:

Java代码  
  1. <!-- ViewResolver -->
  2. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  4. <property name="prefix" value="/WEB-INF/jsp/"/>
  5. <property name="suffix" value=".jsp"/>
  6. </bean>

InternalResourceViewResolver:用于支持Servlet、JSP视图解析;

viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;

prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”;

2.5.5、开发处理器/页面控制器

java代码:

Java代码  
  1. package cn.javass.chapter2.web.controller;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.springframework.web.servlet.ModelAndView;
  5. import org.springframework.web.servlet.mvc.Controller;
  6. public class HelloWorldController implements Controller {
  7. @Override
  8. public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
  9. //1、收集参数、验证参数
  10. //2、绑定参数到命令对象
  11. //3、将命令对象传入业务对象进行业务处理
  12. //4、选择下一个页面
  13. ModelAndView mv = new ModelAndView();
  14. //添加模型数据 可以是任意的POJO对象
  15. mv.addObject("message", "Hello World!");
  16. //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
  17. mv.setViewName("hello");
  18. return mv;
  19. }
  20. }

org.springframework.web.servlet.mvc.Controller:页面控制器/处理器必须实现Controller接口,注意别选错了;后边我们会学习其他的处理器实现方式;

public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回ModelAndView对象;

ModelAndView:包含了视图要实现的模型数据和逻辑视图名;“mv.addObject("message", "Hello World!");

”表示添加模型数据,此处可以是任意POJO对象;“mv.setViewName("hello");”表示设置逻辑视图名为“hello”,视图解析器会将其解析为具体的视图,如前边的视图解析器InternalResourceVi。wResolver会将其解析为“WEB-INF/jsp/hello.jsp”。

我们需要将其添加到Spring配置文件(WEB-INF/chapter2-servlet.xml),让其接受Spring IoC容器管理:

java代码:

Java代码  
  1. <!-- 处理器 -->
  2. <bean name="/hello" class="cn.javass.chapter2.web.controller.HelloWorldController"/>

name="/hello":前边配置的BeanNameUrlHandlerMapping,表示如过请求的URL为 “上下文/hello”,则将会交给该Bean进行处理。

2.5.6、开发视图页面

创建 /WEB-INF/jsp/hello.jsp视图页面:

java代码:

Java代码  
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Hello World</title>
  7. </head>
  8. <body>
  9. ${message}
  10. </body>
  11. </html>

${message}:表示显示由HelloWorldController处理器传过来的模型数据。

2.5.6、启动服务器运行测试

通过请求:http://localhost:9080/springmvc-chapter2/hello,如果页面输出“Hello World! ”就表明我们成功了!

POST中文乱码解决方案

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下:

java代码:

Java代码  
  1. <filter>
  2. <filter-name>CharacterEncodingFilter</filter-name>
  3. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  4. <init-param>
  5. <param-name>encoding</param-name>
  6. <param-value>utf-8</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>CharacterEncodingFilter</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>

以后我们项目及所有页面的编码均为UTF-8。

spring入门例子相关推荐

  1. Spring Boot 入门例子 Hello world - TerryHe 博客园

    下面是一个最简单的 Spring Boot 例子,演示如何在浏览器中显示 Hello world.开发环境使用的是 IDEA, 构建工具使用的是 Gradle 准备工作 需要安装以下工具或组件 JDK ...

  2. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  3. Spring入门介绍:

    Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...

  4. Spring入门5.事务管理机制

    Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分 ...

  5. Spring入门自学

    学习目标: Spring入门自学(持续更新) 学习方式: 知识的浏览者,网页的搬运工. 学习内容: 1.项目目录结构 2.使用框架的版本 3.Spring 概述 4.入门实例代码 5.数据库 6.GE ...

  6. Spring入门(二):自动化装配bean

    Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中需要创建的bean. 自动装配(autowiring):Spring会自动 ...

  7. Spring入门(通俗易懂)

    前言:网上的框架学习教程千千万,所以我通过查看别人理解的,以及一些教程总结了我所掌握的spring的知识点,总的来说就是三个知识点,IOC.DI和AOP的使用,所以并没有那么复杂的理论知识点,如果有错 ...

  8. IDEA环境配置及Spring入门

    IDEA环境配置及Spring入门–以HelloWorld为例的简单介绍与开发步骤 前言:本文主要内容 一:IDEA环境配置 二:用传统Java编程方式写HelloWorld例子 传统java:不使用 ...

  9. Spring——入门介绍(以版本5.2为例)

    目录 1.Spring框架概述 2.Spring入门案例 3.IoC介绍 (1)IoC概述 (2)IoC底层原理 (3)IoC接口 4.IoC操作--Bean 管理 (1)Bean 管理概述 (2)B ...

最新文章

  1. mysql======基本的数据查询(1)
  2. 八十、 Springboot整合异步任务和定时任务
  3. 关于rxjs里operators filter和map的详细讨论
  4. linux 去掉 ^M 的方法
  5. 解决C# 7.2中的结构体性能问题
  6. 求一个张量的梯度_张量流中离散策略梯度的最小工作示例2 0
  7. 基于springboot+shiro一套可落地实施安全认证框架整合
  8. 又一辆特斯拉电动汽车撞上警车,都是因为这个功能
  9. go高性能tcp服务器,在Go中构建并发TCP服务器
  10. ios h5 出现的问题
  11. 展示全面快速响应能力 华为全线解决方案亮相北京国际通信展
  12. MySQL时间函数timestampdiff()使用
  13. matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
  14. linux系统可以在移动硬盘,如何在移动硬盘上装LINUX系统?
  15. Ubuntu16.04 + Titan XP + cuda8.0 + cudnn5.1 + opencv3.3.0 + caffe
  16. socks5代理IP的几种测试工具
  17. WEB介绍(beego)
  18. 爱上c++的第六天(核心课程):继承和多态
  19. 转载于掘金的vue3学习笔记
  20. 线性表示线性相关线性无关

热门文章

  1. python-体质指数BMI计算
  2. linux目录和cat命令
  3. C语言编程-----求s=a+aa+aaa+aaaa+aa...a的值
  4. 大文件上传 NeatUpload 控件
  5. 中职 计算机网络教材,中职计算机网络教材有哪些?
  6. OPPO 全球首发 Android 13 正式版,适配率超 96%!
  7. IE浏览器中img标签不显示图片
  8. 异步四位二进制计数器逻辑图
  9. iphone相册储存空间已满_iphone可用存储空间已满?教你快速回收存储空间
  10. 2007年世界顶级防火墙排名