内容关键词:学习如何编写基于注解的控制器
授课老师:720科技张森鹏
一、知识笔记.
1、Xmind是什么?
XMind 是一款非常实用的商业思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用、高效的可视化思维软件,强调软件的可扩展、跨平台、稳定 性和性能,致力于使用先进的软件技术帮助用户真正意义上提高生产率。 XMind采用Java语言开发,具备跨平台运行的性质,且基于EclipseRCP体系结构,可支持插件,插件通过编写XML清单文件可以扩展系统定义好的扩展点。XMind的程 序主体由一组插件构成,包括一个核心主程序插件、一组Eclipse运行时插件、一个帮助文档插件和一组多语种资源文件插件。Eclipse用户会对它的界面非常亲切。 XMind 应用EclipseRCP软件架构,XMind 的分发包在形式上是一组Eclipse Features,每个Eclipse Feature是一组Eclipse Plugins,Plugin之间相互依 赖相互扩展。在此Pluggable Platform的基础上,XMind 也可以支持其他开发人员为其编写Plugin,为XMind增添新的功能或改进其设计。由于大部分Plugin是 用Java语言编写,用本地语言编写的代码也针对各不同操作系统有不同版本,所以XMind理论上可以运行在几乎所有操作系统上,包括所有64位的操作系统,XMind Pro 6仅支持Windows、Mac OS X和Linux三大操作系统。 功能 XMind不仅可以绘制思维导图,还能绘制鱼骨图、二维图、树形图、逻辑图、组织结构图(Org、Tree、Logic Chart、Fishbone)。并且,可以方便地从这些展示 形式之间进行转换。可以导入MindManager、FreeMind数据文件。灵活的定制节点外观、插入图标。丰富的样式和主题。输出格式有:HTML、图片。 1、思维管理 XMind 在企业和教育领域都有很广泛的应用。在企业中它可以用来进行会议管理、项目管理、信息管理、计划和时间管理、企业决策分析等;在教育领域,它通常被用 于教师备课、课程规划、头脑风暴等。 2、商务演示 XMind 被认为是一种是新一代演示软件的模式,传统的演示软件一般一种线性的方式来表达事物,XMIND 用于演示,为人们提供了一种结构化的演示模式, 在XMind中进行演示,它始终为用户提供纵向深入和横向扩展两个维度的选择,这样用户在进行演示的时候,可以根据听众和现场的反馈及时的调整演示的内容, 对于听众感兴趣的话题,可以纵向深入进行讲解和挖掘,对于听众不太关心的问题可以快速的跳转到下一个话题。 3、与办公软件协同工作 XMind 的文件可以导出成Microsoft Word、Microsoft PowerPoint、PDF、图片(包括PNG、JPG、GIF、BMP 等)、RTF、TXT等格式,可以方便的将XMIND绘 制的成果与朋友和同事共享。 特点 XMind 的特点可用“国产而国际化发展;商业化而兼有开源版本;功能丰富且美观”来概括。 推荐 XMind 来代替或补充 FreeMind,除了功能、界面因素之外,还有两个原因:一是国产软件(虽然网站和软件只有英文);二是XMind由商业软件开源而来—— 多数情况下,有商业背景的产品可持续性会比开源/免费软件好一些。 同类软件对比所得结论 大多数人普通用户:XMind。理由:支持逻辑图、二维图等多种表达形式并可混用,更加美观、支持附件。 Geek或偏执者:FreeMind。理由:更节约资源,界面更简朴。 自主网络发布:FreeMind。理由:强大灵活的html导出功能。 不执着于软件,仅执着于最优效果:主用 XMind 辅用 FreeMind。即仅在自主网络发布时另存为FreeMind格式,再用FreeMind导出为html。
2、Controller 注解类型
org.springframework.stereotype.Controller
注解类型用于指示 Spring 类的实例是一个控制 器。
下面是一个带注解@Controller 的例子。
package com.example.controller;
import org.springframework.stereotype; ...
@Controller public class CustomerController { 4.1 Spring MVC 注解类型 51 // request-handling methods here }
Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证 Spring 能找 到你的控制器,需要完成两件事情。首先,需要在 Spring MVC 的配置文件中声明 spring- context,如下所示:
<beans ... xmlns:context="http://www.springframework.org/schema/context" ... >
然后,需要应用<component-scan/>元素,如下所示:
<context:component-scan base-package="basePackage"/>
请在<component-scan/>元素中指定控制器类的基本包。
例如,若所有的控制器类都在 com.example.controller 及其子包下,则需要写一个如下所示的<component-scan/>元素:
<context:component-scan base-package="com.example.controller"/>
3、RequestMapping 注解类型
现在,我们需要在控制类的内部为每一个动作开发相应的处理方法。要让 Spring 知道用哪一种方法来处理它的动作,
需要使用 org.springframework.web.bind.annotation.Request Mapping 注解类型映射的 URI 与方法。
RequestMapping 注解类型的作用同其名字所暗示的:映射一个请求和一种方法。
可以使 用@RequestMapping 注解一种方法或类。 一个采用@RequestMapping 注解的方法将成为一个请求处理方法,
并由调度程序在接收 到对应 URL 请求时调用。 下面是一个 RequestMapping 注解方法的控制器类。
package com.example.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; ...
@Controller public class CustomerController
{
@RequestMapping(value = "/input-customer ") public String inputCustomer()
{
// do something herereturn "CustomerForm"; } }
二、重要记录
1、具体应用
Controller 类 如前所述,使用 Controller 注释类型的一个优点在于:一个控制器类可以包含多个请 求处理方法。如清单 4.3 所示,ProductController 类中有 inputProduct 和 saveProduct 两个 方法。
清单 4.3 ProductController 类
package controller; import java.match.Bigoecimal import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;
import domain.Product; import form.ProductForm;
@Controller public class ProductController {
private static final Log logger = LogFactory.getLog(ProductController.class);
@RequestMapping(value="/input-product")
public String inputProduct() { logger.info("inputProduct called"); return "ProductForm"; }
@RequestMapping(value="/save-product")
public String saveProduct(ProductForm productForm, Model model)
{ logger.info("saveProduct called");
// no need to create and instantiate a ProductForm
// create Product
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
try { product.setPrice(new BigDecimal(productForm.getPrice())); }
catch (NumberFormatException e) {
}
// add product
model.addAttribute("product", product); return "ProductDetails"; } }
其中,ProductController 的 saveProduct 方法的第二个参数是 org.springframework.ui.Model 类型。无论是否会使用,Spring MVC 都会在每一个请求处理方法被调用时创建一个 Model 实例,用于增加需要显示在视图中的属性。例如,通过调用 model.addAttribute 来添加 Product 实例: model.addAttribute("product", product);
Product 实例就可以像被添加到 HttpServletRequest 中那样访问了
三、学习参考
XMind十大有用的功能
http://www.xmindchina.net/xinwen/xmind-shidagongneng.html
xmind是用来做什么的
https://zhidao.baidu.com/question/535027011.html
SpringMVC更多的学习(博文)
https://blog.csdn.net/u012302681/article/details/47718995
https://www.cnblogs.com/zhanglei93/p/6264796.html
http://www.360doc.com/content/14/1216/13/11965070_433351613.shtml
SpringMVC学习指南