Java Spring MVC 入门- HelloWord+配置IntelliJ idea的Tomcat服务器

**本例使用IntelliJ IDEA 2016.2.5编写,运行环境:tomcat7.0.70测试通过。**

第一次写博客,有些紧张,如果那里写的不对还请指教!

  1. 打开Idea,选择“create new project”。然后如下图创建一个新的工程,点击Next。
    创建新的JavaWeb工程

  2. 设置工程的名称和工程所在路径,然后点击“finsh”。此时idea见自动创建好一个JavaWeb模板。

  3. 在WEB-INF下创建lib文件夹,复制spring框架的关键jar包和Spring 框架依赖的 jar 包:

这里写图片描述

现在,我们已经准备好了本例 的必要文件,下面开始配置我们的spring mvc项目。
首先,我们要配置web.xml文件,完整的配置文件如下:

web.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"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!--表示规定字符编码为UTF-8-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--前端控制器DispatcherServlet的配置-->
    <servlet>
        <servlet-name>chapter2</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup><!--表示启动容器时初始化该Servlet-->
    </servlet>
    <servlet-mapping>
        <servlet-name>chapter2</servlet-name>
        <!-- url-pattern 表示哪些请求交给 Spring Web MVC 处理, “/” 是用来定义默认 servlet 映射的。-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

其中,DispatcherServlet为前端配置器。配置到此,来自浏览器的请求会交给 Spring Web MVC 框架处理,因此我们需要配置 Spring 的配置文件。默认 DispatcherServlet 会加载 WEB-INF/[DispatcherServlet 的 Servlet 名 字 ]-servlet.xml 配 置 文 件 。 所以本例的spring配置文件为:WEB-INF/springmvc1-servlet.xml。下面我们来按照需求编辑springmvc1-servlet.xml文件。

在 Spring 配置文件中配置 HandlerMapping 、HandlerAdapter

<!-- HandlerMapping 表示将请求的URL和Bean名字映射
    如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!-- HandlerAdapter 表示所有实现了org.springframework.web.controller.mvc.Controller接口的Bean
    可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

在 Spring 配置文件中配置 ViewResolver

    <!-- ViewResolver 用于支持Servlet、JSP视图解析-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <!-- viewClass 查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello
        则该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

现在我们建立一个controller,在src下创建文件夹com.mvc.controller,在此目录下创建我们的helloword控制器。

HellowWordController.java

public class HelloWordController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        /**
         * 这个类的功能 
         * 1.手机参数、验证参数
         * 2.绑定参数到命令对象
         * 3.强命令对象传入任务对象进行业务处理
         * 4.选择下一个页面
         */

        ModelAndView mv = new ModelAndView();
        //添加模型数据,可以是任意的POJO对象
        mv.addObject("message","Hello Word!");
        //设置逻辑视图名,视图解析器会根据改名字解析到具体的视图页面
        mv.setViewName("hello");
        return mv;
    }
}

需要注意的是,这里实现的接口controller需要引的包是:

import org.springframework.web.servlet.mvc.Controller;

千万不要引用错了。

因为我们写了一个要显示HelloWord的控制器,我们需要告诉系统有这么一个类,并且应该去哪儿找到这个类。所以我们回到之前的springmvc1-servlet.xml配置文件里,再添加一个bean:

<bean name="/hello" class="com.mvc.controller.HelloWordController/>

这样,当通过url“http://localhost:8080/MySpringMvc/hello”来访问我们的项目时,系统会自动找到控制器,并执行相应的操作。如果name的值为其他,比如/(任意内容),那么我们要访问的地址就要写成:“http://localhost:8080/MySpringMvc/(任意内容)“。

下面创建用来展示成果的view视图页面:

/WEB-INF/jsp/hello.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2016/10/25
  Time: 11:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8"  pageEncoding="UTF-8" language="java" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Hello Word</title>
</head>
<body>
${message}
</body>
</html>

${message}:表示显示由HelloWorldController处理器传过来的模型数据。
ps:还记得类HelloWordController中有一句话mv.addObject("message","Hello Word!");吗?

至此,我们的项目已经初步完成,运行项目,输入url:http://localhost:8080/MySpringMvc/hello查看,如果页面内显示“Hello Word!”,则说明项目运行正常。至于怎么配置idea运行Tomcat项目,在本文最后会讲。


在spring 2.5之前,我们是通过上面的方法,通过实现 Controller 接口或其实现来定义 我们的处理器。本例使用的是spring 4.1.9,很明显已经更新了很多版本了,当然也怎天了许多新的特性。现在就介绍其中两种很常用的注解:@Controller和@RequestMapping。 其中,@Controller是用于标识是处理器类,@RequestMapping是请求到处理器功能方法的映射规则。这么一看,如果用这两个新特性,我们的项目就会简化很多,省去了很多配置,下面我们就使用新特新来修改上面的项目。

  1. 首先,我们想用这两个注解,就要在Spring配置文件中开启支持@Controller 和 @RequestMapping 注解的处理器。打开springmvc1-servlet.xml文件,增加如下代码:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

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

之前的处理器映射DefaultAnnotationHandlerMapping 和处理器适配器
AnnotationMethodHandlerAdapter现在已经过时,请使用上面的bean。

我们依然要告诉系统,我们的控制器都在哪里,即使我们为每一个类都贴上了注解:

<context:component-scan base-package = "com.mvc.controller" />

修改后完整的配置文件:

<?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"
       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">


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

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

    <!-- ViewResolver 用于支持Servlet、JSP视图解析-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <!-- viewClass 查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello
        则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <context:component-scan base-package = "com.mvc.controller" />

</beans>

下面我们修改HelloWordController类:

package com.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2016/10/25.
 */
@Controller
public class HelloWordController{

    @RequestMapping("/hello")
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        /**
         * 1.收集参数、验证参数
         * 2.绑定参数到命令对象
         * 3.强命令对象传入任务对象进行业务处理
         * 4.选择下一个页面
         */
        ModelAndView mv = new ModelAndView();
        //添加模型数据,可以是任意的POJO对象
        mv.addObject("message","Hello Word!");
        //设置逻辑视图名,视图解析器会根据改名字解析到具体的视图页面
        mv.setViewName("hello");
        return mv;
    }
}

到这我们就修改完了,访问url,出现Hello Word,说明运行成功。

*本文参考http://jinnianshilongnian.iteye.com/blog/1594806 开涛的博文,经过自己试验总结,写出了这篇博客,感谢大神留下这么好的文章让我们参考学习,向他们致敬。*


下面介绍如何使用idea来配置Tomcat服务器来运行我们的项目。这个方法使用几乎所有的java项目。

当我们写好项目准备第一次运行的时候,那个绿色的箭头是黑色的,因为我们没有为这个项目配置启动文件,首先我们按照下图所示,点击Edit Configurations:

进入配置页面

按照下图所标出的顺序,依次点击配置:

配置步骤

在新出现的页面上继续按下图的顺序配置:

配置步骤

第一步:修改这个心建立的Tomcat运行实例的名称,随意起,这里我设为项目名称。
第二步:点击configure…,在弹出的页面中选择你的Tomcat,然后确定。
第三步:这个选项是项目启动完成时自动启动浏览器并访问项目的地址。在“http://localhost:8080/”的后面加上项目的名称MySpringMvc,如果你的Application Context写的不是/MySpringMvc,那么这里你就应该写你自定义的那个名称。有关Application Context请往下看。
第四步:点击上面的选项卡“Dloyment”,点右面的+号,注意不是下面的,是页面右侧的。按照下图所示步骤进行:

配置步骤

正常的话这样就行了,然后确定:

步骤

页面中的Application
context是/….,比如咱们的这个项目就是/MySpringMvc,访问的网址为“http://localhost:8080/MySpringMvc/hello”。如果不写,那么访问的网址将变为“http://localhost:8080/hello”。换句话说,如果随意写,那么你请求的网址就应该变为“http://localhost:8080/你随意写的/hello”,这里一定要注意。

完整的配置应该如下图所示:

完整配置

点击OK,这时你的idea主页面应该是这样的:

这里写图片描述

如果和我的一样,点击上面的绿色三角号,运行项目即可。

到这里本文就全部结束了,欢迎指出错误和不足,我将继续改进。我的qq572683491,欢迎喜欢编程事业的伙伴们加我一起研究探讨!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值