grails的controller和action那点事---远程调试groovy代码
最近由于项目需要,用到了grails,这玩意确实好用,生产率高有类型python的速度与简洁。仅第一印象,用的还不深入,说的不对请轻拍。
遇到的几个问题:
1. groovy远程调试
玩Java的应该都知道在eclipse中有个java remote debug的功能,可以调试java拉起的程序,含jar,含web。
话说业界某公司做IDE,拖拽图元出来的代码,都能对图元进行远程调试,虽然那功能做的不是很漂亮,但也不错。
不多了,言归正传。
一个语言如果不能远程调试,那多痛苦啊,尤其是用在web后端的语言。因为一般上点规模的不是玩具的系统都会涉及到很多其他模块,在本机搭环境,会痛苦的一沓。何况很多系统的模块只支持Linux系统
找了好久未能解决。
stackoverflow有一哥们在问,但是也没具体结果
貌似结论就是不支持
How to debug Groovy code via the remote Java application debugging in Eclipse
后来,后来,终于在群里,—飞/aiq警 这个哥们告诉我上IntelliJ IDEA 这个IDE
我带着半信半疑的态度用了把,果然行。
再次谢谢 —飞/aiq警 这个哥们。
说下方法(我这边打出来war是放在tomcat容器中的)
1. 修改tomcat的启动脚本增加dtsocket配置已经打开远程debug的参数
|
1
|
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8333,server=y,suspend=n $JAVA_OPTS"
|
2. 重启tomcat 确认8333端口已经监听
3. 配置IntelliJ, 与eclipse的远程调试类似,大同小异,只是菜单在地方不一样,快捷键不一样
我新建了一个远程debug配置
如下图1
然后启动这个debug 就可以连接到远程的server上了
然后run debug 刚才的那个远程debug就可以了

–
试下断点,果然行
2. 关于请求contriller中的action让其返回xml 出现404问题
在很多场景下,比如做api的需求,webservice的需求,都需要返回xml或者json格式的数据。
但是我按官网的文档区做,怎么做怎么就是404.
说我那个action对应的view不在,汗,我把那个view放上去,他就显示view中的内容,也不显示action中组装的xml的内容。
没招,试了很久,翻阅若干文档,国内的,国外的,E文不够好,看的不是很明白。
终于,终于,发现一个哥们说的,试了下,果然ok,
请猛戳这里REST Service XML Output in Grails via Content Negotiation
关键点在这里:
if you call http://localhost:8080/myapp/blah/list.xml or http://localhost:8080/myapp/blah/list?format=xml, you will get an XML result
其实,看到这里,这个问题,也不复杂。但是我为什么会被绕进去呢,嗯,(⊙_⊙),人品问题?好吧。
我解释下,这玩意按官网的说法,你要想响应回xml格式的内容,只需要
|
1
2
3
4
5
6
7
8
9
10
|
withFormat {
xml {
render(contentType:"text/xml") {
response() {
returncode("FAILED")
message("Could not find conference.")
}
}
}
}
|
就可以了。
但是我的为什么出问题呢
原因是我测试的时候测试页面用的是post请求(当然我已经在urlMappings中配置上post对应的action
“/commonFileShare/preBatchDownload”(controller:”commonFileShare”) {
action = [POST:'preBatchDownload', GET:'preBatchDownload']
}
)
如果用get请求的话就是ok
后来我post的时候
http://192.168.1.148:8080/xxx/commonFileShare/preBatchDownload?format=xml
也是就说你用post方式请求的时候,后面加?format=xml
就可以啦。
–EOF–
grails的controller和action那点事---远程调试groovy代码的更多相关文章
- 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器
MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...
- 解读ASP.NET 5 & MVC6系列(10):Controller与Action
我们知道在MVC5和之前的版本,两个框架的生命周期是不一样的,在新版MVC6中,MVC Controller/Web API Controller已经合二为一了,本章我们主要讲解Controller和 ...
- [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)
我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户, ...
- [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...
- 在ASP.NET MVC 中获取当前URL、controller、action
一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...
- Asp.Net_Mvc_获取当前Url、Controller、Action
一.URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟 ...
- 004. Asp.Net Routing与MVC 之二: 请求如何激活Controller和Action
上篇讲到 请求到达 MvcRouteHandler ,并且透过 IRouteHandler.GetHttpHandler 获取到了真正的处理程序 MvcHandler 这次我们看看,MvcHandle ...
- [译] ASP.NET MVC 6 attribute routing – the [controller] and [action] tokens
原文:http://www.strathweb.com/2015/01/asp-net-mvc-6-attribute-routing-controller-action-tokens/ 当在Web ...
- Yii里获取当前controller和action的id
Yii里获取当前controller和action的id 在控制器里$name = $this->getId(); // controller$name = $action->id; ...
随机推荐
- Js版游戏打砖块开发过程详细
最近对js的小游戏开发来了兴趣,前段时间由于回答度娘知道的提问写了个贪吃蛇,虽然难度不大并不复杂,感觉还挺有意思.感觉小时候玩过的什么俄罗斯方块,坦克大战什么的都可以试着用js实现下,这天来了兴致又想 ...
- Swift - 创建并设置背景(SpriteKit游戏开发)
1,先把背景图片bg.jpg,bg@2x.jpg直接拖进Images.xcassets中 2,设置如下代码(背景图直接铺满整个屏幕) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 使用JDBC进行数据库的事务操作(2)
本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...
- DELPHI 通過窗口句柄或窗口标题得到进程句柄
DELPHI 通過窗口句柄或窗口标题得到进程句柄2009年05月08日 星期五 10:15procedure TForm1.Button1Click(Sender: TObject);varhWind ...
- Uva - 11383 - Golden Tiger Claw
题意:一个N*N的矩阵,第i行第j列的元素大小为w[i][j],每行求一个数row[i],每列求一个数col[j],使得row[i] + col[j] >= w[i][j],且所有的row[]与 ...
- 编译Boost 详细步骤 适用 VC6 VS2003 VS2005 VS2008 VS2010
vs2008编译boost [一.Boost库的介绍] Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库 ...
- 【Demo 0009】Java基础-异常
本章学习要点: 1. 了解异常的基本概念: 2. 掌握异常捕获方法以及注意事项; 3. 掌握异常抛出方法: 4. 掌握自定义异常类和异常类继承注 ...
- CloudStack搭建KVM环境
软件环境:agent:CentOS 6.3,minimal安装,CPU启用VT management server:CentOS 6.3,minimal安装 存储:CentOS 6.3 搭建在mana ...
- 【ASP.NET Web API教程】6 格式化与模型绑定
原文:[ASP.NET Web API教程]6 格式化与模型绑定 6 Formats and Model Binding 6 格式化与模型绑定 本文引自:http://www.asp.net/web- ...
- [页面模板框架对比] Apache Tiles VS Sitemesh
1. 原理对比 (1) Apache Tiles 顾名思义,Tile是瓷砖的意思,也就是说一个网页是由多个Tile组成的. 用户通过访问一个页面的Apache Tiles定义名,就可以访问一个由定义文 ...