前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【framework】spring3-入

【framework】spring3-入

作者头像
py3study
发布2020-01-03 11:29:02
4910
发布2020-01-03 11:29:02
举报
文章被收录于专栏:python3python3

补充:我把相关jar包上传到 http://down.51cto.com/data/477540

spring3发布有相当长一段时间了,因为待业在家,一直帮朋友提供些方案,没有太多关注。近期打算翻译一下spring-reference,发现网上已经存在一些版本了,为了不重复发明轮子,我就弄个个实际例子来写写。

集成

做java的都好喜欢eclipse,没办法,虽然其他语言的程序员一直批判java程序员没有IDE就没法做开发,批判就批判吧,确实好用,好歹也带动了经济。

我用的是工具如下:

IDE: eclipse3.6 中间件(应用服务器): tomcat7.0.27 svn: subversive maven: 3.0.4 framework: springMVC 3.05

 我喜欢eclipse3.6以后的版本,因为他装插件的时候直接搜索就OK,搜索完成后,已经帮你检测出是否已经安装,可以更新。很方便

1.集成svn

svn在eclipse上官方推荐的是subversive,但不代表其他就不好。

点击:help-->eclipse marketplace 

Magical Snap - 2012.08.13 10.52 - 001
Magical Snap - 2012.08.13 10.52 - 001

2. 集成maven

同样在搜索栏里maven

install Maven Integration for Eclipse WTP 

3. spring提供svn地址下载一些项目demo,地址如下

https://anonsvn.springframework.org/svn/spring-samples

在这个地址里下载spring的mvc-basic等项目

4. 一起看下mvc-basic的结构

典型的maven的结构

├─.settings ├─src │  ├─main │  │  ├─java │  │  │  └─org │  │  │      └─springframework │  │  │          └─samples │  │  │              └─mvc │  │  │                  └─basic │  │  │                      └─account │  │  ├─resources │  │  └─webapp │  │      ├─resources │  │      │  └─blueprint │  │      │      ├─plugins │  │      │      │  ├─buttons │  │      │      │  │  └─icons │  │      │      │  ├─fancy-type │  │      │      │  ├─link-icons │  │      │      │  │  └─icons │  │      │      │  └─rtl │  │      │      └─src │  │      └─WEB-INF │  │          ├─classes │  │          ├─layouts │  │          ├─lib │  │          ├─messages │  │          ├─spring │  │          │  └─appServlet │  │          └─views │  │              └─account │  └─test

--------pom.xml 

这里我单独画出pom.xml目的主要是因为maven项目的核心文件就是pom.xml,这里有他所有的依赖和相关组件 

5. 通过eclipse,右键pom.xml—>Run As—>maven install

maven会自动下载相关的依赖jar包(网速不好的话,会比较尴尬)。我回头把相关包传上去,maven服务器经常出现无法下载的和jar下载不全的情况。偏偏spring官网下载的相关包里没有spring-webmvc-3.0.5.RELEASE.jar等

注:maven可以发布war到本地或者远程tomcat下,这里不细讲 

6. 简单走一遍流程 

6.1 看web.xml

代码语言:javascript
复制
<servlet>           <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>  <!--集成spring,核心调度DispatcherServlet -->           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>           <init-param>               <param-name>contextConfigLocation</param-name>               <param-value>  <!--加载spring自己的配置文件-->                   /WEB-INF/spring/appServlet/servlet-context.xml               </param-value>           </init-param>           <load-on-startup>1</load-on-startup>       </servlet>        <servlet-mapping>           <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>           <url-pattern>/</url-pattern>       </servlet-mapping>  

6.2 查看/WEB-INF/spring/appServlet/servlet-context.xml 

代码语言:javascript
复制
<!--加载控制器(原注释) 复制黏贴处问题了,看来看的人真不多。。–> <!--非spring注解,所需的注解驱动加载 2012-9-1修改--><mvc:annotation-driven />   
代码语言:javascript
复制
<!--跟目录访问,默认访问welcome.jsp--> <mvc:view-controller path="/" view-name="welcome"/> 
代码语言:javascript
复制
<!-- jsp在WEB-INF在受到保护,不被外界直接访问,是一种比较常见的安全策略,同时定定义了jsp的地址和扩展名-->       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">           <property name="prefix" value="/WEB-INF/views/"/>           <property name="suffix" value=".jsp"/>       </bean> 

6.3 查看控制器

代码语言:javascript
复制
@Controller   @RequestMapping(value="/account")   public class AccountController {        private Map<Long, Account> accounts = new ConcurrentHashMap<Long, Account>();   /**   * 如果是account的get请求,走getCreateForm   */       @RequestMapping(method=RequestMethod.GET)       public String getCreateForm(Model model) {           model.addAttribute(new Account());           return "account/createForm";       }   /**   * 如果是account的post   */       @RequestMapping(method=RequestMethod.POST)       public String create(@Valid Account account, BindingResult result) {           if (result.hasErrors()) {               return "account/createForm";           }           this.accounts.put(account.assignId(), account);           //实际上这里跳转到了getView方法           return "redirect:/account/" + account.getId();       }   /**   *  跳转到页面view   */       @RequestMapping(value="{id}", method=RequestMethod.GET)       public String getView(@PathVariable Long id, Model model) {           Account account = this.accounts.get(id);           if (account == null) {               throw new ResourceNotFoundException(id);           }           model.addAttribute(account);           return "account/view";       }    }   

6.4 启动项目,地址栏输入http://localhost:8080/mvc-basic/

我们得到的刚好是welcome.jsp页面内容

Magical Snap - 2012.08.13 11.57 - 004
Magical Snap - 2012.08.13 11.57 - 004

6.5 点击@Controller Example,查看createForm.jsp 由getCreateForm方法跳转的页面

代码语言:javascript
复制
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>  这是spring的标签,用在   <form:label    for="name" path="name" cssErrorClass="error">Name</form:label>  <form:input path="name" /> <form:errors path="name" />      

看看页面效果

Magical Snap - 2012.08.13 11.54 - 003
Magical Snap - 2012.08.13 11.54 - 003

7. 为 了调试方便,可以在eclipse下运行tomcat,debug跟踪一下springMVC的流程。

 好了,一个简单的springMVC入门小例子讲解到这里,要想深入了解,可以从

https://anonsvn.springframework.org/svn/spring-samples下载其他例子一一尝试,或者关注笔者。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档