`
陆地小神仙
  • 浏览: 9093 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JFast应用系列之(5) -- 控制器概述

阅读更多

  控制器使用说明:

  首先构建一个最基本的控制器类:

  

/**
 * @Api注解是控制器的标志注解,JFast扫描到注解就会认为他是控制器
 * 当我们发布一个服务时:对应请求路径是: 类名路径+方法路径
 * @author jfast 2015年8月20日
 */
@Api(path = "api/v1", description = "用户信息控制器")
public class UserController {
    
	@Resource
	private UserDao userDao; //字段名称和UserDaoImpl的Resource注解中名称一致
	
	/**
	 * 该服务请求方式为 : GET
	 * 请求地址为 : http://[IP]:[PORT]/[项目名称]/api/v1/users
	 * @return json格式参数
	 * jfast2015年8月20日
	 */
	@Get(path="users",description="获得所有用户")
	public Json getUser() {
		return new Json(userDao.getUser());
	}
        
        /**
	 * 该服务请求方式为 : GET
	 * 请求地址为 : http://[IP]:[PORT]/[项目名称]/api/v1/users/[用户编号]
	 * @return json格式参数
	 * jfast2015年8月20日
	 */
	@Get(path="users/:userId",description="获得指定用户")
	public Json getUser(Integer userId) {
		return new Json(userDao.getUser(userId));
	}
	
}

按照Restful的风格,一般暴露的服务访问地址都是/api/版本号开头,所以建议@Api注解中的path按照我的例子来。

注意点:

  •     最终请求路径 = 类名@Api注解的path属性 + 方法的@Get/@Post/@Delete/@Put的path属性
  •     @Api注解的path属性不是必须的
  •     所有需要暴露服务的方法必须都是public的
  •     一个控制器类中方法不能同名
  •     一个方法如果需要暴露服务,那么有且仅有@Get/@Post/@Delete/@Put/方法中的任意一个注解声明
  •     如果对Restful不太了解的可以百度一下,网上现在有很多了,我就不一一赘述了。

关于在控制器(拦截器,验证器,定时器) 中引入其他对象:

  •     引入普通的Java类,在类名上使用@Resource注解,Jfast启动时,会扫描所有的Resource类,该类的引用名称默认是它的类名首字母小写,也可以在Resource注解中指定想要的名称,jfast会在需要的时候注入到jfast目标组件中。
  •     引入Dao类,在类名上使用@Dao注解,Jfast启动时,会扫描所有的Dao类,Dao类的引用名称默认是它的类名首字母小写,也可以在Dao注解中指定想要的名称,jfast会在需要的时候注入到jfast目标组件中。

控制器请求方法:

  •    @Get 对应 Http 的 GET请求  用于获得某个资源
  •    @Post 对应 Http 的 POST请求  用于在服务端创建某个资源
  •    @Put 对应 Http 的 PUT请求  用于在服务端更新某个资源
  •    @Delete 对应 Http 的 DELETE请求  用于在服务端删除某个资源
  •    其他的还有@Head,@Trace,@Options,@Copy,@Move等

控制器方法返回类型说明(JFast内置返回对象):

  •    Json : 返回Json字符串到客户端
  •    Html: 跳转至html页面
  •    Jsp:跳转至Jsp页面
  •    Download: 客户端下载文件
  •    Api:携带原请求访问下一个服务
  •    Text:返回普通文本

控制器方法接收参数说明:

  • JAVA基本数据类型
  • 数组类型
  • POJO对象
  • HttpServletRequest对象
  • HttpServletResponse对象
  • Cookie对象
  • HttpSessio对象

代码示例:

 

    1.接收java基本类型参数并返回Json字符串到客户端

     

@Get(path="users",description="获得所有用户")
public Json getUser(String userName,String password) {
	return new Json(userDao.getUser());
}

   

2.跳转Jsp页面

   

@Get(path="page")
public Jsp dispatherJsp() {
	return new Jsp("index",Route.DISPATHER);
}

   

3.跳转页面并返回参数

    

@Get(path="page")
public Jsp dispatherJsp() {
	return new Jsp("index",Route.DISPATHER).addDispatherAttribute("username", "jfast");
}

   

4.重定向页面并返回参数

   

@Get(path="page")
public Jsp redirectJsp() {
	return new Jsp("index",Route.REDIRECT).addRedirectAttribute("username", "jfast");
}

   

5.接收User对象1.(Struts2风格)

    

/**
 * 请求参数为: 
 * user.userName = jfast
 * user.password = jfast
 */
@Post(path="users")
public Json addUser(User user) {
	System.out.println(user.getUserName());
	return new Json("{success:true}");
}

   

6.按Json方式接收User对象

    

/**
 * 请求参数为: 
 * user={userName:'jfast',password='',nickName=''}
 */
@Post(path="users")
public Json addUser(User user) {
	System.out.println(user.getUserName());
	return new Json("{success:true}");
}

   

7.文件上传

    

/**
* 前台上传文件
* file = form-data 二进制上传数据
*/
@Post(path="file")
public Json addUser(UploadFile file) {
	System.out.println(file.getFieldName()); // 前台上传文件的字段名,要求和该方法参数名一致
	System.out.println(file.getFileName()); // 前台上传文件本身的名称
	System.out.println(file.getFileData()); // 前台上传文件二进制数据
	System.out.println(file.getSuffix()); // 前台上传文件后缀名称
	return new Json("{success:true}");
}

 

    

分享到:
评论
1 楼 yangsong158 2015-08-20  
做交付型的项目公司,比较适合这种快速开发框架。
优秀的作品,必需支持。

相关推荐

    JFast应用系列之(1) -- Java Restful 服务端 项目搭建

    NULL 博文链接:https://jfast.iteye.com/blog/2236781

    JFast开发手册1

    * org.pp.core.AdminController:标准控制器,封装了分页查询,保存,更新,删除,全部查询,单条数据查询、导入、导出的标准实现 4.3. 工具类 JFast开发手册1的工具类包括: * org.pp.utils.ExcelUtil:Excel...

    jfast快速开发平台-其他

    JFast是一套轻量级的快速开发平台,集业务建模和代码生成于一身的基础框架,按照框架规范,可快速生成一套演示Demo系统,稍微改造即可变成一套可交付实施的软件系统。 本平台的核心采用JFinal+LayUI+MySQL的组合,轻...

    jFAST - the Finite Automata Simulator-开源

    jFAST是一个简单的有限自动机(FA)图形仿真实用程序; 它旨在具有用于创建,编辑和模拟FA的简单机制。 jFAST是学生,教师和自导探索者的理想选择。

    Orange-JFast-开源

    在实际应用中,Orange-JFast 可能被金融机构用于构建市场数据分发系统、实时交易监控平台或是大数据分析工具。由于其开源特性,开发者可以根据自己的需求对其进行扩展,例如添加对其他金融协议的支持,或者优化特定...

    jfast快速开发平台 v1.2.zip

    "jfast快速开发平台 v1.2.zip" 是一个用于快速构建Web应用系统的软件工具,主要面向开发者和系统集成者,旨在提高开发效率并降低项目实施的复杂度。该平台可能包含一系列模块化的设计,允许用户根据需求选择合适的...

    archive_ jfast快速开发平台 v1.2 [江西新余电信].zip.zip

    5. **用户界面(UI)构建器**:为了简化前端开发,jfast可能提供了可视化界面构建器,让非专业前端开发者也能快速创建和定制用户界面。 6. **版本控制与协作**:为了便于团队合作,该平台可能集成了Git或其他版本...

    JFast是一套轻量级的快速开发平台,集业务建模和代码生成于一身的基础框架,按照框架规范,可快速生成_jfast.zip

    JFast是一套轻量级的快速开发平台,集业务建模和代码生成于一身的基础框架,按照框架规范,可快速生成_jfast

    jFAST:此存储库包含 RingBufferLogger 的第一个版本

    默认情况下,这个记录器将从内部环形缓冲区(在单独的线程中)读取消息并将它们写入标准错误输出流(就像 SimpleLogger 所做的那样)。 要实例化 RingBufferLogger,请使用以下方法链: Logger logger = ...

Global site tag (gtag.js) - Google Analytics