Spring MVC入门实例

简介:

一 创建一个动态web项目,并导入jar包
导入最新的spring的jar包,可以自己在官网下载或者导入我用的jar包,链接:http://pan.baidu.com/s/1mhfQ9h2   导入之后是这样的:

wKioL1blhzLTQLx3AAAYg_5QKm0987.png

二 配置web.xml

文件路径是:WebContent/WEB-INF/web.xml ,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<? xml  version = "1.0"  encoding = "UTF-8" ?>< web-app  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xmlns = "http://xmlns.jcp.org/xml/ns/javaee"
     xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version = "3.1" >
     < servlet >
         < servlet-name >SpringMVC</ servlet-name >
         < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class >
         < 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.jsp</ welcome-file >
     </ welcome-file-list ></ web-app >

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

(2)url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的

(3)Dispatcherservlet:默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件,在本例中是:WEB-INF/SpringMVC-servlet.xml

注:SpringMVC-servlet.xml文件的路径可以自定义,比如说放在src目录下,这时候需要修改web.xml文件为:

1
2
3
4
5
6
7
8
9
< servlet >
     < servlet-name >SpringMVC</ servlet-name >
     < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class >
     < 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 >

三 配置SpringMVC-servlet.xml

在这里,这个文件跟web.xml在同一目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<? 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:p = "http://www.springframework.org/schema/p"
     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.1.xsd
         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
 
     < bean  name = "/test1/hello"  class = "cn.zifangsky.ControllerDemo_1" ></ bean >
     
     <!-- ViewResolver -->
     < bean  id = "viewResolver"
         class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
         < property  name = "prefix"  value = "/WEB-INF/jsp/"  />
         < property  name = "suffix"  value = ".jsp"  />
     </ bean >
 
</ beans >

(1)首先定义了一个名为”/test1/hello”的action,对应的处理类是:cn.zifangsky.ControllerDemo_1。启动项目后访问:http://localhost:8080/项目名/test1/hello 即可转入ControllerDemo_1这个处理类

(2)InternalResourceViewResolver:视图名称解析器。在这里prefix和suffix分别表示查找视图页面的前缀和后缀,比如传进来的逻辑视图名为hello,那么该jsp视图页面应该存放在”/WEB-INF/jsp/hello.jsp”

四 action处理类ControllerDemo_1

从上面的SpringMVC-servlet.xml可以看出,ControllerDemo_1存放在cn.zifangsky.ControllerDemo_1,在这里我就简单的打印一个字符串,并返回一个名叫”index“的逻辑视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package  cn.zifangsky;
 
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;
 
import  org.springframework.web.servlet.ModelAndView;
import  org.springframework.web.servlet.mvc.Controller;
 
public  class  ControllerDemo_1  implements  Controller{
 
     public  ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1)  throws  Exception {
         System.out.println( "-------www.zifangsky.cn------" );
         
         return  new  ModelAndView( "index" );
     }
 
}

五 视图index.jsp

SpringMVC-servlet.xml定义的视图前缀和后缀可以得知,返回的视图路径是:[前缀]/逻辑视图[后缀],在这里就是:/WEB-INF/jsp/index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
< html >
< head >
< meta  http-equiv = "Content-Type"  content = "text/html; charset=UTF-8" >
     < base  href="<%=basePath%>">
     < title >Welcome to Hear</ title >
</ head >
< body >
     < div  align = "center" >
         This is first page
     </ div >
</ body >
</ html >

六 运行效果如下

wKioL1bliBrB6Ix3AAB-azkPj1U685.png

七 采用注解的方式处理action:

(1)修改SpringMVC-servlet.xml为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<? 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:p = "http://www.springframework.org/schema/p"
     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.1.xsd
         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
 
     <!-- 启用spring mvc 注解 -->
     < mvc:annotation-driven  />
     <!-- 不操作静态资源 -->
     < mvc:default-servlet-handler  />
     <!-- 设置使用注解的类所在的包 -->
     < context:component-scan  base-package = "cn.zifangsky"  />
 
     <!-- <bean name="/test1/hello" class="cn.zifangsky.ControllerDemo_1"></bean> -->
     <!-- ViewResolver -->
     < bean  id = "viewResolver"
         class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
         < property  name = "prefix"  value = "/WEB-INF/jsp/"  />
         < property  name = "suffix"  value = ".jsp"  />
     </ bean >
 
</ beans >

(2)编写action:

路径是:cn.zifangsky.ControllerDemo_2,完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package  cn.zifangsky;
 
import  org.springframework.stereotype.Controller;
import  org.springframework.web.bind.annotation.RequestMapping;
 
/**
  * @Controller 负责注册一个bean 到spring 上下文中
  * @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
 
  * */
@Controller
@RequestMapping ( "/test2" )
public  class  ControllerDemo_2 {
     @RequestMapping ( "/hello" )
     public  String hello() {
 
         return  "hello" ;
     }
}

注:@Controller 负责注册一个bean 到spring 上下文中;@RequestMapping 注解为控制器指定可以处理哪些 URL 请求。也就是说启动项目后,通过访问:http://localhost:8080/SpringMVCDemo/test2/hello这个访问到这个action

(3)/WEB-INF/jsp/hello.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
< html >
< head >
< meta  http-equiv = "Content-Type"  content = "text/html; charset=UTF-8" >
     < base  href="<%=basePath%>">
     < title >hello world</ title >
</ head >
< body >
     < div  align = "center" >
         This is second page
     </ div >
</ body >
</ html >

(4)运行效果如下:

wKiom1bliBmQQ8jZAACRrP_d5N8070.png

附:SpringMVC常用注解

@Controller    负责注册一个bean 到spring 上下文中

@RequestMapping    注解为控制器指定可以处理哪些 URL 请求

@RequestBody    该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

@ResponseBody    该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

@ModelAttribute     在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中 


@RequestParam     在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

@PathVariable    绑定 URL 占位符到入参

@ExceptionHandler    注解到方法上,出现异常时会执行该方法

@ControllerAdvice    使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1750717,如需转载请自行联系原作者
相关文章
|
3月前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
71 3
SpringBoot入门 - 对Hello world进行MVC分层
|
3月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
51 4
|
28天前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
123 29
|
2月前
|
存储 安全 Java
Spring Security 入门
Spring Security 是 Spring 框架中的安全模块,提供强大的认证和授权功能,支持防止常见攻击(如 CSRF 和会话固定攻击)。它通过过滤器链拦截请求,核心概念包括认证、授权和自定义过滤器。配置方面,涉及密码加密、用户信息服务、认证提供者及过滤器链设置。示例代码展示了如何配置登录、注销、CSRF防护等。常见问题包括循环重定向、静态资源被拦截和登录失败未返回错误信息,解决方法需确保路径正确和添加错误提示逻辑。
116 2
Spring Security 入门
|
1月前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
411 7
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
111 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
71 4
|
3月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
29 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
2月前
|
Java 数据库连接 数据库
从入门到精通---深入剖析Spring DAO
在Java企业级开发中,Spring框架以其强大的功能和灵活性,成为众多开发者的首选。Spring DAO(Data Access Object)作为Spring框架中处理数据访问的重要模块,对JDBC进行了抽象封装,极大地简化了数据访问异常的处理,并能统一管理JDBC事务。本文将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring DAO,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
34 1
|
3月前
|
监控 Java 数据安全/隐私保护
如何用Spring Boot实现拦截器:从入门到实践
如何用Spring Boot实现拦截器:从入门到实践
97 5