`

SpringMVC_3.x_入门指南_1

阅读更多

SpringMVC 3.x

注解的(annotation)全新的MVC框架;

 

M -model
模型,包括DAO,Service等部分
V -view
视图,JSP等部分
C -controller
控制器

 

Spring的web框架围绕DispatcherServlet设计。
DispatcherServlet的作用是将请求分发到不同的处理器。
相当于Struts中的中央控制器,Struts中的控制器是过滤器,而SpringMVC是一个Servlet;



SpringMVC的简单请求流程:

前台控制器(Front Controller)接收到请求(Incoming Request)让下面的具体的控制器(Controller)去完成相应操作,给出响应(model)给前台控制器,前台控制器把model交给视图模板(View Template),应用模板后给用户做出显示!

 



SpringMVC的请求方式:

1,普通的请求
浏览器发出普通请求,经过SpringMVC的Dispatcher跳转到相应的Controller,Controller调用Service去请求持久层,结合Model Bean(pojo等)产生视图,给用户做出响应;
2,Ajax请求
用户发出Ajax请求,到达Dispatcher,跳转Controller,调用Service结合Model Bean产生请求的资源信息,以XML或者JSON的形式给浏览器做出响应;

 

使用Maven搭建SpringMVC开发环境
1,在pom.xml添加基本的jar和配置web服务器环境jetty

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>3.2.4.RELEASE</version>
</dependency>
        
<!-- 提供对c标签的支持 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<!-- servlet api -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
</dependency>
<!-- javax提供的annotation -->
<dependency>
	<groupId>javax.inject</groupId>
	<artifactId>javax.inject</artifactId>
	<version>1</version>
</dependency>

<build>
    <finalName>springmvc</finalName>
    <!-- maven的jetty服务器插件 -->
    <plugins>
    	<plugin>
		  <groupId>org.mortbay.jetty</groupId>
		  <artifactId>jetty-maven-plugin</artifactId>
		  <configuration>
		    <scanIntervalSeconds>10</scanIntervalSeconds>
		    <webApp>
		      <contextPath>/</contextPath>
		    </webApp>
		    <!-- 修改jetty的默认端口 -->
		    <connectors>
		       <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
		          <port>80</port>
		          <maxIdleTime>60000</maxIdleTime>
		       </connector>
		    </connectors>
		  </configuration>
		</plugin>
    </plugins>
</build>

2,在web.xml中配置基本的DispatcherServlet注意修改默认的web.xml中的xsd约束)

<?xml version="1.0" encoding="UTF-8" ?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>Archetype Created Web Application</display-name>
  
  
  <!-- 配置springmvc servlet -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- / 表示所有的请求都要经过此serlvet -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

配置完成,启动服务器!jetty:run

启动不会报错,启动完成后,在浏览器中输入:localhost访问默认页面!

提示:500错误
原因:

写道
java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]

不能找到/WEB-INF/下的一个文件,文件叫作:springmvc-servlet.xml

意思是说:我们还需要一个配置文件

SpringMVC推荐加载此配置文件,在容器启动的时候!在web.xml中修改如下:

<!-- 配置springmvc servlet -->
<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>
	<!-- / 表示所有的请求都要经过此serlvet -->
	<url-pattern>/</url-pattern>
</servlet-mapping>

再次启动服务器,将会报错!!!仍然是缺配置文件!

配置文件的名称:springmvc-servlet.xml中的springmvc跟你配置的servlet-name保持一致;

我们在WEB-INF下建立我们的:springmvc-servlet.xml
使用springmvc的schema约束,基本结构如下:

<?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.xsd	 
        http://www.springframework.org/schema/mvc	 
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">	 
	 
	 
</beans>

添加这些约束的配置文件会变成一个树叶,表示这是springmvc的配置文件!


spring的配置文件:applicationContext.xml跟这个配置不冲突,这个配置文件跟spring的配置文件其实就是多了一个mvc项的配置

那么我们这个配置文件里面到底配置哪些东西呢?

<mvc:annotation-driven/>

表示我要使用基于注解的springmvc

<context:component-scan base-package="com.cn.controller">
	<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

base-package表示自动扫描com.cn.controller包中的注解

include-filter表示只扫描expression="org.springframeword.stereotype.Controller"的注解,也就是只扫描类上有@Controller注解的类:

package com.cn.controller;

import org.springframework.stereotype.Controller;

@Controller
public class HomeController {

}

spring配置文件中也有自动扫描,你可以设置以下内容排除掉扫描Controller注解:

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

如何请求我们的Controller中的方法呢?

通过如下注解进行实现:

@RequestMapping("/home")
public String home(){
	return null;
}

springmvc中的url推荐不加后缀!
并且,你还可以使用下面的地址完成特定的请求:
/user/1   查看ID=1的用户
/del/1     删除ID=1的用户
这种方式是如何实现的呢?
我们知道浏览器只能发出get,post请求,但是我们可以通过程序发送其他请求,我们常用的有:

get       获取
post     保存
delete  删除
put       可以用来修改

/user/1
对于上面的url,如果你发送的是get请求,服务器就给你做出get响应
如果你发送的delete请求,服务器就给出删除响应

那么在springmvc中是什么样子的呢?

@RequestMapping(value="/user/1",method=RequestMethod.GET)
public String getUser(){
	System.out.println("get...获取用户");
	return null;
}
@RequestMapping(value="/user/1",method=RequestMethod.DELETE)
public String delUser(){
	System.out.println("delete...删除用户");
	return null;
}

简单说了一下springmvc中的地址,下面我们来说如何请求我们的url;

配置home方法如下:

@RequestMapping("/home")
public String home(){
	System.out.println("home...");
	return "home";
}

启动容器,确定不再报错了,然后在浏览器中请求:localhost/home

又报错了。
错误信息:

写道
javax.servlet.ServletException: Circular view path [home]: would dispatch back to the current handler URL [/home] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

意思是:

检查你的视图解析器是否建立,你输入的url我无法解析;

什么是视图解析器呢?
仍然是在springmvc-servlet.xml中需要配置的一项;

<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	<property name="prefix" value="/WEB-INF/views/"/>
	<property name="suffix" value=".jsp"/>
</bean>

视图解析器就是一个类:UrlBasedViewResolver,其中有三个属性:

viewClass,我们使用的是JstlView
prefix,前缀,就是我们请求的页面所在的地方
suffix,后缀,就是标识我们的视图是以什么后缀结尾,eg.home.jsp

这样定义完成之后,我们在/WEB-INF/下建立views文件夹,并新建一个home.jsp

再次启动容器,并请求:localhost/home就可以跳转到home.jsp页面了!

那么如何请求views/user/文件夹下的user.jsp呢?
很简单:

@RequestMapping(value="/user",method=RequestMethod.GET)
public String getUser(){
	System.out.println("get...获取用户");
	return "user/user";
}

 

至此我们可以使用SpringMVC做网站了!最基本的配置就这些!

 

 

 

  • 大小: 85 KB
  • 大小: 144.9 KB
0
1
分享到:
评论

相关推荐

    springmvc_4\springmvc_4.part1.rar

    springmvc_4\springmvc_4.part1.rar

    springmvc_learning.rar

    1. SpringMVC的环境搭建:包括添加依赖、配置web.xml和SpringMVC的配置文件。 2. Controller的创建与处理:了解如何使用@Controller和@RequestMapping注解。 3. Model和视图:理解ModelAndView类的作用,以及如何...

    SpringMvc_Maven.zip_java项目_maven_maven springmvc_springmvc maven

    1. **创建 Maven 项目**:首先,你需要使用 Maven 的 archetype 命令或者 IDE(如 IntelliJ IDEA 或 Eclipse)的向导创建一个新的 Maven 项目。 2. **添加依赖**:在 POM.xml 文件中,你需要添加 Spring MVC 和其他...

    tmp_springmvc_maven.rar

    《SpringMVC与Spring整合及Maven项目结构详解》 在Web开发领域,SpringMVC作为Spring框架的一部分,被广泛用于构建高效的、模块化的后端控制器。本项目以"tmp_springmvc_maven.rar"为载体,展示了如何利用SpringMVC...

    SpringMVC_Upload.rar_shipvu7_springmvc_springmvc upload

    总的来说,"SpringMVC_Upload.rar_shipvu7_springmvc_springmvc upload"示例涉及了Spring MVC框架下的多文件上传、返回值处理以及与数据库交互的关键知识点。通过学习和实践这些内容,你可以构建出健壮的Web应用程序...

    SpringMVC_JDBC.zip_springmvc

    SpringMVC是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。SpringMVC旨在简化开发,通过解耦业务逻辑、视图呈现和数据访问,使开发者可以更加专注于应用程序的...

    springmvc_demo.zip

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。在Java世界中,SpringMVC作为轻量级的MVC(Model-View-Controller)架构模式,被广泛应用于构建高性能、可维护的企业级应用。在这个...

    Tomcat 部署 war 源文件 springmvc_war.zip

    【标题】:Tomcat部署WAR源文件:SpringMVC应用 【描述】:在Java Web开发中,Tomcat是一款广泛使用的轻量级应用服务器,它能够运行Servlet和JSP应用程序。这里我们关注的是如何在Tomcat上部署一个名为"springmvc_...

    SpringMVC_01.rar

    这个名为"SpringMVC_01.rar"的压缩包文件显然是一个针对初学者的Spring MVC学习项目,它包含了实现Spring MVC基本功能所需的代码示例,非常适合入门学习。 在Spring MVC中,主要涉及以下几个核心概念: 1. **...

    springmvc_4\springmvc_4.part2.rar

    springmvc

    Spirng_SpringMVC_Mybatis.zip

    Spring、SpringMVC和Mybatis是Java开发中广泛使用的三大框架,它们的整合(SSM)为开发者提供了高效且灵活的Web应用开发解决方案。在这个案例中,我们将深入探讨这三个框架如何协同工作,以及如何实现基本的用户管理...

    springmvc_demo.7z

    1. **Maven配置**:在`pom.xml`文件中,你会看到项目依赖的声明,包括SpringMVC、Spring核心、Spring上下文、Spring JDBC、MyBatis(如果使用的话)等。Maven会自动下载这些依赖并管理它们。 2. **SpringMVC配置**...

    SpringMVC_4.rar.rar

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构模式的实现,帮助开发者将业务逻辑、数据展示和用户界面分离,提高代码的可维护性和可测试性。下面将详细讨论...

    springmvc_day01_01_start.zip

    《SpringMVC 入门教程:从零开始学习SpringMVC》 在IT行业中,SpringMVC作为一款强大的Web应用程序框架,被广泛应用于Java后端开发。本教程以"springmvc_day01_01_start.zip"为起点,旨在帮助初学者快速掌握...

    1. 尚硅谷_佟刚_SpringMVC_概述.zip

    1. **SpringMVC简介** SpringMVC是Spring框架的一部分,旨在简化Java Web开发。它提供了一种用于处理HTTP请求和响应的机制,通过DispatcherServlet作为入口点,负责调度请求到相应的处理器。 2. **MVC架构** MVC...

    SpringMVC_beetl.rar_beetl_sheep8on_springmvc

    1. 添加依赖:在项目pom.xml文件中,添加SpringMVC和Beetl的相关依赖,包括SpringMVC的核心库、Beetl的主库以及其Spring插件。 2. 配置Beetl:在Spring的配置文件中,定义Beetl的配置bean,设置模板路径、编码格式...

    2021全新SpringMVC教程

    1.1_SpringMVC_课程介绍.mp4 1.2_SpringMVC_导学.mp4 02_SpringMVC_回顾MVC.mp4 04_SpringMVC_SpringMVC的特点.mp4 06_SpringMVC_HelloWorld:创建maven工程.mp4 10_SpringMVC_HelloWorld:配置springMVC配置文件....

    springMVC_netty.rar

    3. **SpringMVC与Netty集成**:在SpringMVC应用中集成Netty,通常是为了实现高效的后台服务,例如,通过TCP通信进行大数据传输或实时通信。集成的关键在于创建一个独立于SpringMVC的Netty服务器,作为后台服务,处理...

    springmvc_2020.rar

    1. 登录验证,(同时ajax的异步验证) 2. 老师和学生登录后有不同的界面 3. 学生可以给老师留言,并查看自己留言的状态 4. 老师可以对学生进行增删改查,对留言进行处理 5.资源中提供数据库

Global site tag (gtag.js) - Google Analytics