创建第一个springmvc程序

1、创建父项目文件,导入依赖,删除src文件夹

pom.xml文件

  1. <dependencies>
  2. <dependency>
  3. <groupId>junit</groupId>
  4. <artifactId>junit</artifactId>
  5. <version>4.12</version>
  6. <scope>test</scope>
  7. </dependency>
  8. <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
  9. <dependency>
  10. <groupId>javax.servlet.jsp.jstl</groupId>
  11. <artifactId>jstl-api</artifactId>
  12. <version>1.2</version>
  13. </dependency>
  14. <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
  15. <dependency>
  16. <groupId>javax.servlet.jsp</groupId>
  17. <artifactId>javax.servlet.jsp-api</artifactId>
  18. <version>2.3.3</version>
  19. <scope>provided</scope>
  20. </dependency>
  21. <dependency>
  22. <groupId>javax.servlet</groupId>
  23. <artifactId>servlet-api</artifactId>
  24. <version>2.5</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework</groupId>
  28. <artifactId>spring-webmvc</artifactId>
  29. <version>5.3.20</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.projectlombok</groupId>
  33. <artifactId>lombok</artifactId>
  34. <version>1.18.24</version>
  35. </dependency>
  36. </dependencies>

2、创建子项目文件,导入jar包

pom.xml

  1. <dependencies>
  2. <dependency>
  3. <groupId>javax.servlet.jsp</groupId>
  4. <artifactId>javax.servlet.jsp-api</artifactId>
  5. <version>2.3.3</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>javax.servlet</groupId>
  9. <artifactId>servlet-api</artifactId>
  10. <version>2.5</version>
  11. </dependency>
  12. </dependencies>

3、右键子项目文件,添加框架支持,选中web框架

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--写死的-->
  7. <servlet>
  8. <servlet-name>springmvc</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <init-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <!--根据classpath创建spring对应的applicationContext.xml文件-->
  13. <param-value>classpath:springmvc-servlet.xml</param-value>
  14. </init-param>
  15. <!--启动级别:1为服务器启动就开启,值越接近1优先级越高-->
  16. <load-on-startup>1</load-on-startup>
  17. </servlet>
  18. <!--在springmvc中,
  19. / :会匹配所有请求,除了jsp
  20. /* :会匹配所有请求,包括jsp,会导致无限循环的hello.jsp.jsp.jsp.....
  21. -->
  22. <servlet-mapping>
  23. <servlet-name>springmvc</servlet-name>
  24. <url-pattern>/</url-pattern>
  25. </servlet-mapping>
  26. </web-app>

4、创建applicationContext.xml文件,添加对应bean

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--添加spring的BeanNameUrlHandlerMapping、SimpleControllerHandlerAdapter和InternalResourceViewResolver-->
  7. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  8. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  9. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
  10. <!--根据prefix找到文件夹目录,根据suffix找到对应类型的文件-->
  11. <property name="prefix" value="/WEB-INF/jsp/"/>
  12. <property name="suffix" value=".jsp"/>
  13. </bean>
  14. <!--将写好的servlet类加入bean中,id为请求的路径-->
  15. <bean id="/hello" class="com.kuang.controller.HelloController"/>
  16. </beans>

5、编写bean中对应的servlet类

  1. package com.kuang.controller;
  2. import org.springframework.web.servlet.ModelAndView;
  3. import org.springframework.web.servlet.mvc.Controller;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. //实现controller接口,重写handleRequest方法,返回一个视图
  7. public class HelloController implements Controller {
  8. @Override
  9. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  10. //新建一个modelandview
  11. ModelAndView mv = new ModelAndView();
  12. //添加对象
  13. mv.addObject("msg","HelloSpringMVC");
  14. //设置返回的视图,不需要后缀名,在applicationcontext中添加过suffix
  15. mv.setViewName("hello");
  16. //将对应视图返回
  17. return mv;
  18. }
  19. }

6、可能遇到的问题

404找不到文件

不是你代码的问题,可以查看依赖是否成功导入

7、通过tomcat启动运行,在浏览器中访问http://localhost:8080/hello

程序运行成功

创建第一个springmvc程序的更多相关文章

  1. 手把手教你优雅的编写第一个SpringMVC程序

    可能之前写的文章走进SpringMVC世界,从SpringMVC入门到SpringMVC架构中的第一个springMVC入门程序讲解的不是那么优雅.细致.精巧,因此特地写这篇稍微优雅.细致.精巧一些的 ...

  2. SpringMVC-02 第一个SpringMVC程序

    SpringMVC-02 第一个SpringMVC程序 第一个SpringMVC程序 配置版 新建一个Moudle , springmvc-02-hello,确定依赖导入进去了 1.配置web.xml ...

  3. Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...

  4. 手动创建第一个OC程序

    手动创建第一个OC程序 创建一个文件夹,文件夹内创建一个a.m的OC源文件,并编辑 之前说过,OC是完全兼容C语言的,那么我们先写个下面的程序尝试一下 #include<stdio.h> ...

  5. 纯小白创建第一个Node程序失败-容易忽略的一个细节

    一直觉得自己基础还很差,所以自觉不敢去碰node.js,但又对其心怀好奇.恰巧最近有一点空闲时间,忍不住去试了一下水   这不,在创建第一个node程序时就吃了闭门羹,总是提示我没有定义,如下图, 这 ...

  6. “全栈2019”Java第四章:创建第一个Java程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  8. (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  9. CodeBlocks环境搭建及创建第一个C++程序

    某业界大牛推荐最佳的途径是从raytracing入门,所以本屌开始学习<Ray Tracing In One Weekend>. 该书是基于C++的.本屌从未学过C++.感觉告诉我,要先搭 ...

  10. SpringMVC_001 第一个SpringMVC程序

    今天我们来学习第一个SpringMVC程序 一.配置开发方式 (1)首先建立一个SpringMVC  web程序 (2)导入jar包 (3)建立UserController.java package ...

随机推荐

  1. mybatis xml 文件 sql include 的用法

    mybatis xml 文件中对于重复出现的sql 片段可以使用标签提取出来,在使用的地方使用标签引用即可具体用法如下: <sql id="Base_Column_List" ...

  2. Spring Cloud 服务的注册与发现之eureka客户端注册

    1.在客户端maven项目中添加eureka客户端依赖 <dependency> <groupId>org.springframework.cloud</groupId& ...

  3. KingbaseES自动生成列介绍

    在KingbaseES中create table语句支持GENERATED column(生成列). 生成列是一种特别的列类型,它的值基于其他列的值计算得出.因此,生成列之于列,有点像视图之于表的关系 ...

  4. KingbaseES 行级安全策略介绍

    本文详细介绍了KingbaseES中通过CREATE POLICY为一个表定义一条行级安全性策略.注意为了应用已被创建的策略,在表上必须启用行级安全性. 策略名称是针对每个表的.因此,一个策略名称可以 ...

  5. KingbaseES V8R3 集群运维案例--kingbase_monitor.sh启动”two master“案例

    案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...

  6. KingbaseES 参数设置优先级别

    Oracle的参数可以设置system和session级别,当设置了session级别的参数时,会覆盖值system级别. KingbaseES除了该两个级别外,还有database级别.user/r ...

  7. 【已解决】ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes

    export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=roote ...

  8. [Android开发学iOS系列] 和一个真正iOS开发的区别?

    和一个真正iOS开发的区别? 学习iOS的这段时间, 我一直在思考和感受着自己和一个真正做了几年iOS的dev之间的区别. 同时也在反向思考, 我自己和一个新学Android的人, 又有什么区别. 也 ...

  9. #并查集,单调栈#美团2018年CodeM大赛-决赛 C-Traffic

    题目 分析 首先如果枚举起点\(i\),点\(i\)到点\(j\)(i<j)的距离跳到点\(k\)(k<i)一定不优,所以可以先处理这种情况, 用单调栈维护\(dp\)单调递增,并且如果栈 ...

  10. Techwalk攻略 | 来北京与OpenHarmony技术大会一起技术漫游!

     去北京Citywalk已经不是新鲜事? 不如来第二届OpenHarmony技术大会一起Techwalk! 大会即将开幕请速速收藏以下打卡攻略↓ 点击链接,观看线上直播