用IDEA Intellij,本来创建的是SpringMVC项目,但是下载的时候,太慢了。所以还是用的Maven项目。
选择Maven 项目->Archetype->Web application. 本来需要增加参数-DarchetypeCatalog=internal,
但是发现也不用了,应该是已经下载了。
首先将webapp->WEBINF->web.xml,改一下:
Archetype Created Web Application
main-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
main-dispatcher
/
注意其中的servlet和servlet-mapping。但是发现servlet-class显示的是红字。判断原因是需要在pom.xml中加上引用库。
改好的pom.xml如下:
4.0.0
com.webapp
hellospringmvc
war
1.0-SNAPSHOT
hellospringmvc Maven Webapp
http://maven.apache.org
4.2.6.RELEASE
junit
junit
3.8.1
test
org.springframework
spring-webmvc
${spring.version}
org.springframework.data
spring-data-jpa
1.10.1.RELEASE
javax.servlet
jstl
1.2
hellospringmvc
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
然后打开file - project structure,加上java目录,并标记为Source目录。
做完上面几步,再看web.xml,就没有红字报错了。
然后配置启动环境,Run->Edit-Configuration,
里面把Tomcat的端口改一下,我这里改的是8010,然后把chrome的启动url也改成8010. 在Deploy tab加上artifact,选默认的就行。
然后不用写代码,直接Run 就能看到 localhost:8010 能够打开"Hello World!" 页面。
然后,先在web.xml里面加上对于编码的处理,最后web.xml变成这样:
Archetype Created Web Application
main-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
main-dispatcher
/
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
然后在java目录下建package com.webapp.hello,然后在其中建class, MainController,内容如下:
packagecom.webapp.hello;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;/*** Created by baidu on 16/10/7.*/@Controllerpublic classHelloController {
@RequestMapping(value="/", method=RequestMethod.GET)publicString index() {return "hello";
}
}
注意,return的是hello.
然后根据servlet名字,加上servlet的配置文件 main-dispatcher-servlet.xml,内容如下:
然后在index.jsp的同级目录加一个hello.jsp如下:
SpringMVC Demo 首页Hello World!
成功自定义页面啦!
然后在project名字的右键,第二个"Add framework support"点开,加上Spring support。(不确定是否需要加上这个)
然后点击运行。就能看到"Hello World"。但是遗憾地发现,还是index.jsp的内容。
然后把index.jsp删掉,发现才能够显示定制化的内容。原来开始是受index.jsp屏蔽了。
Hello World!成功自定义页面啦!
以下讲述,怎么向JSP页面传输变量。
将MainController.java更新为如下:
packagecom.webapp.hello;importorg.springframework.stereotype.Controller;importorg.springframework.ui.ModelMap;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importjava.util.LinkedList;importjava.util.List;/*** Created by baidu on 16/10/7.*/@Controllerpublic classHelloController {
@RequestMapping(value="/", method=RequestMethod.GET)publicString index(ModelMap modelMap) {
List userList= newLinkedList();
userList.add("张三");
userList.add("李四");
modelMap.addAttribute("userList", userList);return "hello";
}
}
然后将hello.jsp更新为如下:
SpringMVC Demo 首页Hello World!
成功自定义页面啦!
没有用户!
运行,发现显示没有用户,不符合预期:
网上搜索,可能是没有加jstl,然后在第二行加上:
然后重新运行,可以显示用户啦:
至此,利用SpringMVC搭建基本的动态页面,基本完成。
以下,是来自简书某个页面的介绍,讲的比较浅显易懂:
http://www.jianshu.com/p/6b3d30b2fd18
Spring MVC请求处理流程
Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。Spring MVC请求处理的整体流程如图:
在web.xml中我们可以看到配置了一个DispatcherServlet,该Servlet拦截了 / 的所有请求
在mvc-dispatcher-servlet.xml中 component-scan 扫描指定的文件夹下的文件(这里指定了根目录)
当请求发起时,Spring MVC扫描文件发现HelloController 中的 @Controller和@RequestMapping("/")注解便由DispatcherServlet转向HelloController来处理 / 请求
当HelloController返回hello变由mvc-dispatcher-servlet.xml的配置默认加上前后缀成为/WEB-INF/pages/hello.jsp,最后将Hello World输出
更多SpringMVC的学习,参考我的另一篇博客:
http://www.cnblogs.com/charlesblc/p/5933555.html