说明:本文章的内容转载至:https://my.oschina.net/happyBKs/blog/690926
如有侵权的地方,请联系本人,本人将会立即删除!
这次文章是springMVC笔记系列时隔一年之后的继续,但是我想先就其中的数据绑定写一串博文。
首先,这里做个插曲。之前的博客文章用的IDE是STS(eclipse的子子孙孙),这次springMVC数据绑定的几篇博客文章,我的示例用的是intellj idea,所以,给不熟悉这个IDE工具的同学做个把屎把尿的插曲介绍。
这里需要特别注意的是,idea和eclipse在一些概念上有区别,十分容易混淆,这里做个说明:
eclipse idea
workspace project
project module
idea中的project相当于eclipse中的workspace,而idea中的module相当于eclipse中的project。但是在组织形式上也会有些许的不同,这个我们后面再说。
我们先在idea下把Maven webapp项目建好,步骤如图,文字自行脑补。
(这里说明一下,由于当中idea版本升过级,重新建了个项目所以这里截图看到的是ideaSpringMVC,其实应该是ideaSpringMVC2。)
idea新建maven webapp没有src,要自己建,T T。
idea建立的文件夹可以做用处标记,源文件文件夹、资源文件夹等等。不然右击文件夹新建的时候会找不到相应的模板。
方便还是挺方便的。
我们在com.happyBKs.controller下定义一个类TestController,用@Controller注解标记为一个控制器。我
package com.happyBKs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* Created by happyBKs on 2016/5/24.
*/
@Controller
@RequestMapping("/hello")
public class TestController {
//localhost:8080/home/mvc或localhost:8080/web应用名称/home/mvc
@RequestMapping("/world")
public String helloMVC(){
return "first";
}
}
当然,springMVC在搜索控制器的时候需要定义搜索包的范围,所以,我们需要定义一个springMVC的配置文件。而定义springMVC的配置文件之前,需要在中定义好前端控制器DispatcherServlet,以及相应的配置文件路径。
web.xml如下:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- DispatcherServlet, Spring MVC的核心 -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- DispatcherServlet对应的上下文配置, 默认为/WEB-INF/$servlet-name$-servlet.xml
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<!-- mvc-dispatcher拦截所有的请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
注意:虽然springMVC的配置文件(其实是定义的相应的DispatcherServlet的对应的配置文件)是可以通过初始化参数contextConfigLocation来指定的,如果不配置指定,那就按照约定:DispatcherServlet对应的上下文配置, 默认为/WEB-INF/ servlet−name -servlet.xml
DispatcherServlet对应的上下文配置
/WEB-INF/configs/spring/mvc-dispatcher-servlet.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:context="http://www.springframework.org/schema/context"
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/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-dispatcher的DispatcherServlet使用, 提供其相关的Spring MVC配置 -->
<!-- 启用Spring基于annotation的DI, 使用户可以在Spring MVC中使用Spring的强大功能。 激活 @Required
@Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等标注 -->
<context:annotation-config />
<!-- DispatcherServlet上下文, 只管理@Controller类型的bean, 忽略其他型的bean, 如@Service -->
<context:component-scan base-package="com.happyBKs.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- HandlerMapping, 无需配置, Spring MVC可以默认启动。 DefaultAnnotationHandlerMapping
annotation-driven HandlerMapping -->
<!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 -->
<mvc:annotation-driven />
<!-- 静态资源处理, css, js, imgs -->
<!--<mvc:resources mapping="/resources/**" location="/resources/" />-->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsps/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
这里注意,该配置文件其实归结起来做了四件事情:
激活一些注解
定义DispatcherServlet上下文,即刚才所说的搜索哪些包
激活springMVC的几个注解
定义请求和视图View资源之间映射
接下来,定义视图View,我们在\WEB-INF\jsps\下定义了first.jsp
\WEB-INF\jsps\first.jsp如下:
<html>
<body>
<h2>Hello! I am developing a springMVC project with intellj idea!</h2>
<h2>HappyBKs</h2>
</body>
</html>
最后,我们在idea下配置如何将webapp发布到tomcat上运行:
点击【Run | Edit Configurations…】
点击左上角的绿色加号。选择Tomcat server 的 local
然后配置Server
然后选择选项卡Deployment,配置部署方式
点加号,选择Artifact。
注意,这里我们还可以为应用配置一个请求中的web应用名称,默认是 “/”
如果我们不配置,请求的是localhost:8080/【Controller映射路径】
这里,我们为应用去个名字叫/mvc。一台服务器毕竟一般会部署很多个应用嘛!
请求的url则是localhost:8080/【web应用配置的名称】/【Controller映射路径】,即localhost:8080/mvc/hello/world
好,最好保存,点击运行。
webapp的首页会自动在默认浏览器中打开(用哪个浏览器,idea也可以配置的)。
之后我们请求http://localhost:8080/mvc/hello/world
好了,这篇博文虽然是承接springMC笔记系列,但是毕竟时隔一年了,我将springMVC的原理性的东西,尤其是前端控制器等重新整理了一遍。还有便是,算是把在intellj idea下如何配置你的第一个springMVC方法一步一步讲清楚了,用惯了eclipse的idea小白们不妨试试吧。