resin php,resin竟然开始支持PHP
真是好消息,resin开始支持PHP了,早上查资料,意外的看到了这个消息。由Resin 3.0.17开始,Resin里多了一个称为Quercus的东西,Quercus其实就是用Java实作的PHP语言模组。一直以来WEB语言都是各自为政,都有自己的WEB服务器。常常可以看到大家整合这个,整合那个的文章出现。总是想为什么不能由一种WEB服务器提供全面支持呢。真是累人啊,一个环境配置就要消耗大家很多的学习时间。
现在好了,终于PHP可以与JAVA共舞了。感觉很爽!
按查到的资料配置了一下resin,不错PHP还真是可以运行。
在Resin里使用PHP的设定很简单,就是设定一个QuercusServlet,再设一个Servlet-mapping以将*.php交给QuercusServlet处理即可。设定范例如下:
在webapps/ROOT/WEB-INF目录里增加web.xml档案,内容为:
servlet-class="com.caucho.quercus.servlet.QuercusServlet">
在webapps/ROOT里新增HelloWorld.php档案,内容为:
echo "Hello World";
?>
看上去很简单吧。不过,经过本人测试,发现有字符集问题。当在resin下运行的PHP是中文的时候会报如下错语信息:
500 Servlet Exception java.io.CharConversionException: illegal utf8 encoding at (178)
at com.caucho.vfs.i18n.UTF8Reader.read(UTF8Reader.java:152)
at com.caucho.vfs.ReadStream.readChar(ReadStream.java:451)
at com.caucho.vfs.ReadStream$StreamReader.read(ReadStream.java:1107)
at com.caucho.quercus.parser.QuercusParser.read(QuercusParser.java:4208)
at com.caucho.quercus.parser.QuercusParser.parseToken(QuercusParser.java:3278)
at com.caucho.quercus.parser.QuercusParser.parseStatementList(QuercusParser.java:447)
at com.caucho.quercus.parser.QuercusParser.parseStatement(QuercusParser.java:596)
at com.caucho.quercus.parser.QuercusParser.parseIf(QuercusParser.java:901)
at com.caucho.quercus.parser.QuercusParser.parseStatementList(QuercusParser.java:486)
at com.caucho.quercus.parser.QuercusParser.parseTop(QuercusParser.java:431)
at com.caucho.quercus.parser.QuercusParser.parse(QuercusParser.java:355)
at com.caucho.quercus.parser.QuercusParser.parse(QuercusParser.java:259)
at com.caucho.quercus.page.PageManager.parse(PageManager.java:185)
at com.caucho.quercus.Quercus.parse(Quercus.java:358)
at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
at com.caucho.util.ThreadPool.run(ThreadPool.java:433)
at java.lang.Thread.run(Thread.java:595)
设置了一下web.xml也没有解决这个问题。呵,只是初步试一下,先能支持了PHP就好,其它的问题再慢慢研究吧。想一想在java中字符集的问题也一直是很多人头痛的事,PHP在java环境运行当然也会存在这个问题。并不奇怪。要怪,就怪所有这些好的语言都出自英文国家的程序员之手吧。各位国人高手们,革命尚未成功,同志仍需努力啊。呵呵,,共勉共勉!!
相关文章:

NSD WINDOWS--2014.8.11
实验01:不同网段的计算机远程配置交换机实验目标:实现不同网段的计算机远程配置交换机实验环境:实验步骤:一、分别配置pc0和pc1的ip地址网关二、配置交换机的管理ip地址和网关三、配置交换机远程管理密码和enable密码四、配置路由器的ip地址五…

day1-数据库基础
数据库基本概念 数据库是什么 数据库是用来存储数据的仓库,本质上就是一套基于CS架构的服务端和客户端程序,最终将数据存储在服务器端的磁盘中。之前学过的数据存储方式有: 列表 字典......等等,是在内存中的数据,缺点…

双重指针作为函数参数的妙用
双重指针作为函数参数,可以在函数函数内部修改外部指针的值。主要用法包括: 1. 在函数内部分配内存,作为函数参数返回; 2. 在函数内部设置指针为空; #include <stdio.h> #include <stdlib.h> #include …

什么是常函数?
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成…
matlab整型和浮点的区别,技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)......
1.2.1 什么是变量和变量名变量这个词似乎在许多地方都有出现,在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科),而这个所谓的名字就叫做变量名。举个例子说现在我们再MATLAB的命令窗口中输入:A 1 然后按回车,我们会看…

为窗口添加滚动条事件
为窗口添加滚动条事件其实非常的简单, window.οnscrοllfunction(){};注意在获取滚动条距离的时候谷歌不识别document.documentElement.scrollTop,必须要加上document.body.scrollTop;即var scrolltopdocument.documentElement.scrollTop||d…

当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...
如果是老版本的MSTSC则使用 MSTSC /console /v:ip如果是新版本 MSTSC /admin /v:ip转载于:https://www.cnblogs.com/SharkXu/archive/2012/10/08/MSTSC.html

连续地址数据(数组或者malloc的内存)作为函数参数
在编程时,一簇连续的内存单元,比如数组或者malloc的内存块,如下的数组a 或者指针p. int a[4]; int *p malloc(4 * sizeof(int)); 我们要想修改上述连续的内存块,可以写一个函数(一维指针做参数传入起始地址即可)来搞定。 If …

Linux 文件系统及 ext2 文件系统
linux 支持的文件系统类型 Ext2:有点像 UNIX 文件系统。有 blocks,inodes,directories 的概念。Ext3:Ext2 的加强版,添加了日志的功能。支持 POSIX ACL(Access control Lists,访问控制列表) 。Isofs(iso9660):CDROM 文件系统。Sysfs:基于 ram 的文件系统,…
php每分钟刷新一次的验证码,php如何在进入页面的时候自动刷新一次验证码
页面直接进入login页面的时候无法获取到$_SESSION["auth"]值,只能刷新一次验证码才能获取到值,怎么才能在用户访问的时候自动刷新一次验证码,求大神支招。。。验证码回复讨论(解决方案)哪里获取到$_SESSION["auth"]值&am…

vs2010快捷方式
【窗口快捷键】 CtrlW,W: 浏览器窗口 CtrlW,S: 解决方案管理器 CtrlW,C: 类视图 CtrlW,E: 错误列表 CtrlW,O: 输出视图 trlW,P: 属性窗口 CtrlW,T: 任务列表 CtrlW,X: 工具箱 CtrlW,B: 书签窗口 CtrlW,U: 文档大纲 CtrlD,B: 断点窗口 CtrlD,I: 即时窗口 CtrlTab: 活…

移动端rem屏幕设置
//修改页面title var pageTitledocument.getElementsByTagName("title")[0].innerHTML; if(location.href.indexOf("index.html")>-1 || location.href.indexOf("html")-1){document.getElementsByTagName("title")[0].innerHTML&q…

二维指针操作链表
背景 Linus slashdot: https://meta.slashdot.org/story/12/10/11/0030249 Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了…

php多选框怎么传值,tp3.2如何处理多选框传参和判断状态
创建多选框:(1)普通的多选:123(2)在数据库中遍历出来的多选框,value和data-id都要赋值(大家都懂,我就不说啦):{$vo.title} 2.我是用jq做的异步,我是使用英文“,”分割字段存储的。我们的前端是自己封装过的,大家根据自…

UIWebView和UIActivityIndicatorView的结合使用
环境:Xcode6.1 UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等。这篇文件将结合UIActivityIndicatorView控件制作一个小实例(加载apple的官网)。效果如下: 一.建立一个Sin…

Python对象类型——字符串、列表、元组
字符串Python连接多个字符串可用“”号,但这个操作不如把所有子字符串放到一个列表或可迭代对象中,然后调用一个join方法来把所有内容连接在一起节约内存。原始字符串操作符(R/r):相当于取消“\”转义,在使…

leetcode--1:(python)Two Sum
2019.5.25: #1 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: 我的解法࿱…

memset初始化内存
在suse 9,运行man memset 查看memset的解释如下: “NAME memset - fill memory with a constant byte SYNOPSIS #include <string.h> void *memset(void *s, int c, size_t n); DESCRIPTION The memset() function fills the fir…

php 数字变量,php入门变量之数字_PHP教程
在介绍变量时,我明确指出PHP具有整型和浮点型(小数)数字类型。但是,依据我的经验,这两种类型都可以归类到一般的数字之下(在极大程度上是这样的)。下面列举下PHP中有效的数字类型的变量:83.1410980843985-4.23985084.4e2注意&…

BZOJ 1597: [Usaco2008 Mar]土地购买( dp + 斜率优化 )
既然每块都要买, 那么一块土地被另一块包含就可以不考虑. 先按长排序, 去掉不考虑的土地, 剩下的土地长x递增, 宽y递减dp(v) min{ dp(p)xv*yp1 }假设dp(v)由i转移比由j转移优(i>j), 那么dp(i)xv*yi1 < dp(j)xv*yj1化简得 (dp(i) - dp(j))/(yi1-yj1) > -xv然后就斜率优…

雨季来临 对车辆涉水说“NO”
七月的上海开始进入暴雨频发的季节。在城市排水系统受到考验的同时,车主们的车辆也同样经受着雨水的考验。而每年都会有相当一部分车辆因为“水害”,使车辆自身的价值受到很大的影响。为此开新通过以下案例为大家做个分析。并推荐几个实用的技巧以备不时…

C#编写dll进行sql server数据库扩展储存过程
一、编写C#函数文件 1、新建一个类库文件 备注:sqlserver 2008只能用.net3.5版本。 2、如有想加入强命名的话可如下步骤: 参考博文:https://blog.csdn.net/donnie88888888/article/details/52743064 1、运行在“开始菜单”-“程序”-“Micros…

malloc(0)-malloc 0 字节
C17中有如下描述: 7.22.3 Memory management functions 1 The order and contiguity of storage allocated by successive calls to the aligned_alloc, calloc, malloc, and realloc functions is unspecified. The pointer returned if the allocation succeeds …

php常见排序算去,PHP兑现常见排序算法
PHP实现常见排序算法//插入排序(一维数组)function insert_sort($arr){$count count($arr);for($i1; $i$tmp $arr[$i];$j $i - 1;while($arr[$j] > $tmp){$arr[$j1] $arr[$j];$arr[$j] $tmp;$j--;}}return $arr;}//选择排序(一维数组)function select_sort($arr){$coun…

C#中 int.TryParse 的用法
int i -1;bool b int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记。 int i -1;bool b int.TryParse("123", out i); 执行完毕后,b等于true,i等于123;…

2022-2028年中国综艺节目市场深度调研及投资前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国综艺节目行业市场行业相关概述、中国综艺节目行业市场行业运行环境、分析了中国综艺节目行…

cocos2d-js 自定义事件监听派发
熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法。 cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyReleased: function(keyCod…

URL编码转义,冒号和/不转,否则导致http链接失效
URL含有中文需要转义 参考 https://blog.csdn.net/benbenxiongyuan/article/details/10608095 自己写一个 1 public boolean checkURLFileIsExist(String stringURL){2 boolean isExist false;3 String sEncodeURL;4 5 try{6 // URL内中文…

C面向对象之透明指针的运用
不透明指针(opaque pointer)可以用来在C中实现封装。 什么是不透明指针(opaque pointer) 从字面意思来看,“不透明”意味着看不到内部,因此“不透明指针”即看不到内部定义的指针。这样说有些抽象,我们来看个例子: #include &l…

支付宝 php rsa算法,:PHP支付宝接口RSA验证
这两天一直困扰的PHP RSA签名验证问题终于解决了,由于之前RSA接触的不多,再加上官方至今还未有PHP的SDK可供参考,因此走了一些弯路,写在这里和大家分享。虽然支付宝官方还未提供相关SDK,PHP确实可以实现RSA方式的签名&…