您的位置:首页 > 运维架构 > Tomcat

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

2016-10-25 14:57 525 查看
**本例使用IntelliJ IDEA 2016.2.5编写,运行环境:tomcat7.0.70测试通过。**


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

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



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

在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.选择下一个页面

c268
*/

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是请求到处理器功能方法的映射规则。这么一看,如果用这两个新特性,我们的项目就会简化很多,省去了很多配置,下面我们就使用新特新来修改上面的项目。

首先,我们想用这两个注解,就要在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,欢迎喜欢编程事业的伙伴们加我一起研究探讨!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  idea mvc java spring tomcat