首页 > 其他分享 >SpringMVC中HelloWorld实现(三)

SpringMVC中HelloWorld实现(三)

时间:2022-12-14 15:38:25浏览次数:70  
标签:www http SpringMVC springframework 实现 HelloWorld org servlet schema


我机器的开发环境为:

开发工具:Eclipse For JavaEE;

数据库:MySql5.5.35;

运行环境:TomCat V7.0;

JDK:JDK 1.7.0_45;

项目工程为:Dynamic Web Project;

 

一、项目依赖的jar包:


[html]  ​​view plain​​ ​​copy​​ ​​print​​ ​​?​​



  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3. <modelVersion>4.0.0</modelVersion>  
  4. <groupId>com.somnus</groupId>  
  5. <artifactId>SpringMVC</artifactId>  
  6. <packaging>war</packaging>  
  7. <version>0.0.1-SNAPSHOT</version>  
  8. <name>SpringMVC Maven Webapp</name>  
  9. <url>http://maven.apache.org</url>  
  10. <properties>  
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  12. </properties>  
  13. <!-- maven依赖包的书写是有顺序的,请不要更改下面dependency的顺序,避免造成JAR包冲突 -->  
  14. <dependencies>  
  15. <!-- servlet & jsp -->  
  16. <dependency>  
  17. <groupId>javax.servlet</groupId>  
  18. <artifactId>servlet-api</artifactId>  
  19. <version>2.5</version>  
  20. <scope>provided</scope>  
  21. </dependency>  
  22. <dependency>  
  23. <groupId>javax.servlet</groupId>  
  24. <artifactId>jstl</artifactId>  
  25. <version>1.2</version>  
  26. </dependency>  
  27. <dependency>  
  28. <groupId>javax.servlet.jsp</groupId>  
  29. <artifactId>jsp-api</artifactId>  
  30. <version>2.2</version>  
  31. <scope>provided</scope>  
  32. </dependency>  
  33. <!-- 加入springmvc依赖包 -->  
  34. <dependency>  
  35. <groupId>org.springframework</groupId>  
  36. <artifactId>spring-webmvc</artifactId>  
  37. <version>3.2.5.RELEASE</version>  
  38. </dependency>  
  39.   
  40. <!-- 加入fileupload依赖包 -->  
  41. <dependency>  
  42. <groupId>commons-fileupload</groupId>  
  43. <artifactId>commons-fileupload</artifactId>  
  44. <version>1.3.1</version>  
  45. </dependency>  
  46. <!-- .jackson -->  
  47. <dependency>  
  48. <groupId>org.codehaus.jackson</groupId>  
  49. <artifactId>jackson-core-asl</artifactId>  
  50. <version>1.9.12</version>  
  51. </dependency>  
  52. <dependency>  
  53. <groupId>org.codehaus.jackson</groupId>  
  54. <artifactId>jackson-mapper-asl</artifactId>  
  55. <version>1.9.12</version>  
  56. </dependency>  
  57. <!-- bean validator -->  
  58. <dependency>  
  59. <groupId>javax.validation</groupId>  
  60. <artifactId>validation-api</artifactId>  
  61. <version>1.1.0.Final</version>  
  62. </dependency>  
  63. <dependency>  
  64. <groupId>org.hibernate</groupId>  
  65. <artifactId>hibernate-validator</artifactId>  
  66. <version>4.3.2.Final</version>  
  67. </dependency>  
  68. </dependencies>  
  69. </project>  




 

二、在/WEB-INF中添加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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 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>SpringMVCLesson</display-name>

<servlet>
<servlet-name>SpringMVCLesson</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springservlet-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后 -->
</servlet>
<!-- Spring MVC配置文件结束 -->

<servlet-mapping>
<servlet-name>SpringMVCLesson</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>


首先是配置DispatcherServlet,根据系列(1)的Spring MVC响应流程图,可以看出DispatcherServlet主要就是拦截请求,然后调用对应的Controller和Action,解析和渲染指定的视图并返回响应 。

其中classpath:springservlet-config.xml指定具体的配置文件为springservlet-config.xml。

<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动,必须放在<servlet>

servlet-mapping中的<servlet-name>指定配置的是哪个servlet,<url-pattern>则指定拦截哪些请求到该servlet,这里配置的是拦截全部请求。

 

三、springservlet-config.xml文件配置:

在项目中新建一个resources的Source Folder文件夹,并添加springservlet-config.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
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/util
http://www.springframework.org/schema/util/spring-util.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.xsd" >

<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven/>

<!-- 如果当前请求为“/”时,则转发到“/helloworld/index” -->
<mvc:view-controller path="/" view-name="forward:/helloworld/index"/>
<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>

<!-- 开启controller注解支持 -->
<!-- use-default-filters="false" 只扫描指定的注解 -->
<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

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

</beans>


<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

servlet,所以我们在这里要对静态资源文件映射作一下配置,否则请求这些资源文件会返回404:


<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>


开启Controller注解支持,并配置只扫描指定包下面的Controller:


<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>


配置视图解析器,并指定视图所在的文件夹:


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>


添加HelloWorldController,在项目中新建一个web的Source Folder文件夹,并在文件夹下面添加com.demo.web.controllers包,在包中添加一个HelloWorldController类,类中内容如下:


package com.demo.web.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/helloworld")
public class HelloWorldController {

@RequestMapping(value="/index", method = {RequestMethod.GET})
public ModelAndView index(){

ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "Hello World!");
modelAndView.setViewName("index");
return modelAndView;
}

}


其中@Controller 注解把该class指定为controller,controller 上的@RequestMapping 注解的 value值指定该controller所映射的请求。

方法上的@RequestMapping 注解指定该方法为一个action,value 值指定该action所映射的请求,method 中的RequestMethod.GET指定该action只接受get请求。

ModelAndView 中的setViewName指定了该action所对应的视图名称,解析视图时会在springservlet-config.xml文件指定的视图文件夹中寻找对应的视图。

 

WEB-INF文件夹下新建一个views文件夹,并在views中添加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>
</head>
<body>
${message}
</body>
</html>


 

<mvc:view-controller path="/" view-name="forward:/helloworld/index"/>

SpringMVC中HelloWorld实现(三)_spring

把请求的URL地址改为配置的地址:http://localhost:8080/SpringMVCLesson/helloworld/index,可以看到结果相同:

SpringMVC中HelloWorld实现(三)_springmvc_02

标签:www,http,SpringMVC,springframework,实现,HelloWorld,org,servlet,schema
From: https://blog.51cto.com/u_15912341/5937187

相关文章

  • Mybatis学习之实现数据的增删改查(3)
    前面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在User.xml 的配置文件中,mappernamespace="com.yihaomen.mybatis.inter.IUserOperation",命名空间非常重......
  • Mybatis学习之实现关联数据的查询(4)
    有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创......
  • Mybatis学习之实现mybatis分页(8)
    上一篇文章里已经讲到了mybatis与springMVC的集成,并且做了一个列表展示,显示出所有article列表,但没有用到分页,在实际的项目中,分页是肯定需要的。而且是物理分页,不是内存分......
  • Java泛型链表实现
    ​​链表简介​​代码实现packagecom.chenxixuexi;/***泛型链表*单链表逆置数据--节点*求单链表倒数第K节点*求两个单链表是否相交相交交点*判断单链表是否有......
  • 剑指Offer-Java-用两个栈实现队列
    题目用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。代码只需要来回倒就可以实现了。importjava.util.Stack;publicclassSolution{Stack......
  • 【DBN回归预测】基于麻雀算法优化深度置信网络SSA-DBN实现数据回归多输出预测附matlab
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • HelloWorld编写与编译
    HelloWorld1.随便新建一个文件夹,存放代码2.新建一个Java文件文件后缀名为.javaHello.java【注意】系统可能没有显示文件后缀名,我们需要手动打开3.编写代码p......
  • Ireport实现接收List<Map>参数并展示出来
    首先:在你的报表中接收java传过来的字段他们统一放置在parameter中,sql查询出的字段统一放置在fields中。那么如下我的parameters中有一个equips的字段。它是collection类型......
  • Ocelot API网关的实现剖析
    在微软TechSummit2017大会上和大家分享了一门课程《.NETCore在腾讯财付通的企业级应用开发实践》,其中重点是基于ASP.NETCore打造可扩展的高性能企业级API网关,以开源的......
  • 实现一个可拖拽的div(vue3写法)
    constchatbox=ref();constdragx=(el)=>{letoDiv=chatbox.value;//当前元素letdisX=el.clientX-oDiv.offsetLeft;letdisY=el.clientY-oDi......