mvc思想创建java项目_自建一个Java Spring MVC项目

用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!

成功自定义页面啦!

没有用户!

${user}

运行,发现显示没有用户,不符合预期:

627eaf91fa2c30bff984116370606d4e.png

网上搜索,可能是没有加jstl,然后在第二行加上:

然后重新运行,可以显示用户啦:

d93174abcad9bf020110fda1389f30e5.png

至此,利用SpringMVC搭建基本的动态页面,基本完成。

以下,是来自简书某个页面的介绍,讲的比较浅显易懂:

http://www.jianshu.com/p/6b3d30b2fd18

Spring MVC请求处理流程

Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。Spring MVC请求处理的整体流程如图:

9c3b731cbcb32cd302f667e4619a9216.png

在web.xml中我们可以看到配置了一个DispatcherServlet,该Servlet拦截了 / 的所有请求

a356c05bd016faac79be92f02ed70b24.png

在mvc-dispatcher-servlet.xml中 component-scan 扫描指定的文件夹下的文件(这里指定了根目录)

5e6ab6298d6c6b11303a6c757e262166.png

当请求发起时,Spring MVC扫描文件发现HelloController 中的 @Controller和@RequestMapping("/")注解便由DispatcherServlet转向HelloController来处理 / 请求

cfc9d324220fa6ed3215a00fd617f36a.png

当HelloController返回hello变由mvc-dispatcher-servlet.xml的配置默认加上前后缀成为/WEB-INF/pages/hello.jsp,最后将Hello World输出

af0ba3b648ae15c83dfaa2daceb839bf.png

更多SpringMVC的学习,参考我的另一篇博客:

http://www.cnblogs.com/charlesblc/p/5933555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值