Spring学习之第一个Spring MVC程序IDEA开发环境

  回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代。一般接触到一个新的Web框架,都会想问这个框架优势在哪?或者比其他框架好在哪里?如果没有使用Spring MVC框架,而是使用其他框架并且能够很好地满足要求,这样转换框架或许不是一个好主意。如果像我这样首次接触Web开发框架,Spring MVC还是值得优先考虑的。

  • Web层,更确切说是在框架处理器方面,Spring MVC对请求处理期间涉及的各种关注点进行了合理而完全的分离,并明确设置了响应的角色用于建模并处理整个声明周期中的各个关注点。其中包括:HandlerMapping用于处理Web请求与具体请求处理控制器的映射关系;LocaleResolver用于国际化处理;ViewResolver用于灵活的视图选择。
  • 从表现层来看,Spring MVC用了逻辑命名视图策略,通过引入ViewResolver和View,清晰分离了视图策略的选择和渲染与具体控制器之间的耦合,适合各种视图技术很容易集成到Spring MVC中,不管是JSP/JSTL作为视图技术,还是Velocity/FreeMarker,甚至是PDF/Excel等二进制格式视图形式,使用它们,只需要简单的配置。
  • Spring MVC还有另一个特色,就是“师出名门”,作为Spring大家族中的一员,很容易得到家族中其他兄弟的支持,从IoC到AOP的支持,以及数据访问层、事务管理层的支持等。Spring MVC属于请求驱动的Web框架,将单一Servlet作为整个应用的Front Controller,该Servlet收到具体的Web请求后,会参考设置的映射关系,将待处理的Web请求转发给次一级的控制器来处理。

建立Spring MVC工程

  LZ的开发环境是IDEA,这几天使用IDEA的感觉来看,IDEA整体界面比eclipse清爽,打开和关闭速度要快好多,但是好多功能还不知道在哪里,呜呜呜…

1 打开IDEA,新建工程

2 工程选择如下所示

  当然,新建工程时也可以选择Spring – Spring MVC(这里把Web Application也要选择上)

3 工程命名为mvcdemo,如下所示,然后点击finash

4 新建工程完成后,需要手动添加关联的jar包(LZ没有使用maven,为什么呢,因为现在还不会…),鼠标移动工程名处右键点击Open Module Settings,添加对应的Jar包

5 最后工程整体如下所示,为了方便,把spring所有的jar包都给添加上了,还有commons-logging包。

6 配置web.xml文件和mvcdemo-servlet.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    display-name>Spring MVC</servlet>
        servlet-name>mvcdemoservlet-class>org.springframework.web.servlet.DispatcherServletload-on-startup>1>
    servlet-mappingurl-pattern>/>

web-app>

  以上是web.xml文件,DispatcherServlet作为整个应用的Front Controller,其用来处理所有请求,而不能像“一个Web请求对应一个Servlet”那样获取Web容器对URL映射匹配的支持,而只好自己处理具体的Web请求和具体的处理类之间的映射关系了,也就是需要借助于ControllerBeanNameHandlerMapping了。

beans ="http://www.springframework.org/schema/beans"
       xmlns:xsi
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"<!-- HandlerMapping 根据benaname找到对应的controller -->
    bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"/>

     controller 配置处理器 name="/hello" class="com.luoxn28.hello.HelloController" ViewResolver 视图解析器  ="org.springframework.web.servlet.view.InternalResourceViewResolver" 前缀 和 后缀 -->
        property ="prefix" value="/WEB-INF/"/>
        ="suffix"=".jsp"/>
    bean>
beans>

  ControllerBeanNameHandlerMapping用来处理具体的Web请求和具体的处理类之间的映射关系,而Controller(HelloController是Controller的实现类)也就是一个具体的处理类。InternalResourceViewResolver配置的是视图解析相关信息。

7 在src文件夹下新建com.luoxn28.hello包,然后在包下新建HelloController类。

package com.luoxn28.hello;

import org.springframework.web.servlet.ModelAndView;
 org.springframework.web.servlet.mvc.AbstractController;

 javax.servlet.http.HttpServletRequest;
 javax.servlet.http.HttpServletResponse;

public class HelloController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,HttpServletResponse response) {
        String hello = request.getParameter("hello");

        System.out.println("HelloController: " + hello);
        ModelAndView mav = new ModelAndView("hello");
        mav.addObject("hello",hello);

        return mav;
    }
}

8 在WEB-INF文件夹下新建hello.jsp文件,内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>springmvc</title>
</head>
<body>
    Spring MVC<br/>
    ${hello}
</body>
</html>

9 更改index.jsp文件如下:

%@ page contentType="text/html;charset=UTF-8" language="java" %html>
  headtitle>$Title$bodyform action="hello" method="post">
      hello:input type="text" name="hello"/>
      ="submit"="提交"form>

10 至此,整个工程建立完毕,现在的工程视图如下:

 

  然后鼠标移动工程名处右键点击Open Module Settings,进行配置,在Modules下添加Spring,选择Spring Application Context为WEB-INF下的mvc-demo-servlet.xml,如下图所示:

  点击Artifacts,下面有提示信息,点击Fix...按钮,如下所示:

  一切设置完毕后,点击启动按钮,显示画面如下所示:

  随便输入一串字符串后点击提交,比如输入"luoxn28",最后会跳转到如下界面,到此整个工程结束。

 

参考资料

  1、Spring MVC从入门到精通视频教程

  2、《Spring揭秘》Spring MVC章节

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了idea中mapper快速跳转到xml插件的方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。idea mapper快速跳转到xml插件1...
今天小编给大家分享的是IDEA搭建Maven模块化项目的实现方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有
这篇文章主要介绍了ideaintellij怎么快速修复if语句缺少大括号问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇idea&n...
这篇文章主要介绍“idea运行main方法或Test避免编译整个应用怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇...
这篇文章主要介绍“idea项目全局去掉严格的语法校验方式是什么”,在日常操作中,相信很多人在idea项目全局去掉严格的语法校验方式是什么问题上存在疑惑,小编查...
本文小编为大家详细介绍“Windows、IDEA、VSCode常用快捷键有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Windows、IDEA、VSCode常用快捷...
本篇内容介绍了“idea乱码修改bin目录下idea.exe.vmoptions无效怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领...
本文小编为大家详细介绍“怎么将idea本地项目更新到gitlab”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么将idea本地项目更新到gitlab”文章能帮助大家解...
今天小编给大家分享一下gitlab拉取新分支idea看不到怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“idea上git仓库不见了怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“idea上git仓库不
本文小编为大家详细介绍“怎么搭建CAS服务并将CAS项目导入IDEA”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么搭建CAS服务并将CAS项目导入IDEA”文章能帮...
这篇文章主要介绍“idea无法切换分支报错如何解决”,在日常操作中,相信很多人在idea无法切换分支报错如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单...
这篇文章主要讲解了“怎么使用IDEA回滚某次提交的代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎
这篇文章主要介绍了IDEA2022中如何部署TomcatWeb项目的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇IDEA2022中如何部署T...
这篇文章主要介绍“idea怎么设置Git忽略对某些文件或文件夹的版本追踪”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这...
今天小编给大家分享一下Idea中mapper注入报错问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考...
本篇内容介绍了“怎么将IDEA项目部署到Gitee”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
本篇内容主要讲解“idea2019上如何配置gitee以实现代码的版本控制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
这篇文章主要介绍“idea中如何运行gitee”,在日常操作中,相信很多人在idea中如何运行gitee问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,
本篇内容主要讲解“idea如何上传到gitee”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“idea如何上传到gitee”...