首页 > 其他分享 >grails的controller和action那点事---远程调试groovy代码

grails的controller和action那点事---远程调试groovy代码

时间:2022-12-13 22:35:15浏览次数:77  
标签:groovy xml preBatchDownload grails --- action debug 远程 调试

 

最近由于项目需要,用到了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的参数

Shell

 

export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8333,server=y,suspend=n $JAVA_OPTS"

2. 重启tomcat 确认8333端口已经监听

3.  配置IntelliJ, 与eclipse的远程调试类似,大同小异,只是菜单在地方不一样,快捷键不一样

grails的controller和action那点事---远程调试groovy代码_JAVA

我新建了一个远程debug配置

如下图1

然后启动这个debug 就可以连接到远程的server上了

然后run debug 刚才的那个远程debug就可以了

​​

grails的controller和action那点事---远程调试groovy代码_远程调试_02

试下断点,果然行

 

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格式的内容,只需要

JavaScript

 

 

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–

 

​http://www.simonme.org/?p=169​



标签:groovy,xml,preBatchDownload,grails,---,action,debug,远程,调试
From: https://blog.51cto.com/u_15147537/5935209

相关文章

  • 知识回顾-JDK有哪些垃圾收集器及收集器组合
    目录经典垃圾收集器新生代Serial收集器ParNew收集器ParallelScavenge收集器老年代SerialOld收集器ParallelOld收集器CMS收集器G1收集器ZGC收集器如何获取使用的默认的垃......
  • day01-家具网购项目说明
    家具网购项目说明1.项目前置技术Java基础正则表达式MysqlJDBC数据库连接池技术满汉楼项目(包括框架图)JavaWeb2.相关说明这里先使用原生的servlet/过滤器,后台......
  • Go-15 Golang语言中time包以及日期函数
    packagemainimport( "fmt" "time")//Golangtime包以及日期函数funcmain(){ /* 1.time.Now()获取当前时间 2.Format方法会格式化输出日期字符串 3......
  • #yyds干货盘点#【愚公系列】2022年12月 微信小程序-自定义导航栏功能的实现
    前言导航栏是指位于页面顶部或者侧边区域的,在页眉横幅图片上边或下边的一排水平导航按钮,它起着链接站点或者软件内的各个页面的作用。小程序原生导航栏的限制除了胶囊按......
  • 操作系统-文件管理
    4.1初识文件文件的属性文件名:相同目录不可重名标识符:各文件标识符唯一,对用户无可读性类型位置:存放路径,在外存中地址(对用户地址不可见)保护信息:对文件进行......
  • doctor-index.jsp
    ......
  • 操作系统-设备管理
    UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作 按使用特性分类人机交互类外部设备:数据传输速度慢存储设备:数据传......
  • 性能优化-压测实战-分析电商项目购物车qps低的几种情况
    性能优化-压测实战-电商项目购物车背景:对学过的一个电商项目购物车相关接口性能优化手段再次复盘,添加一些个人笔记配置Jmeter压测计划Jmeter压测可视化原理:通过配置J......
  • Python8-eg
    实例01(创建计算BMI指数的模块)1deffun_bmi(person,height,weight):2'''功能:根据身高和体重计算BMI指数3person:姓名4heigh......
  • python-flask03
    g对象g:global缩写是关键字所以不能用,只能写成了g。g对象是一个全局对象。作用:上下文*请求的是上下文,等请求进来就有。请求走了,还一直存在。*所以在当次请求过......