我一直在搜索net和stackoverflow,以获取使用servlet过滤器将内容插入响应的示例,但只能找到捕获/压缩输出和/或更改标头的人的示例.我的目标是在所有HTML响应的结束</ body>之前附加一大块HTML.
我正在研究扩展HttpServletResponseWrapper的解决方案,以使用我自己的PrintWriter,然后覆盖其上的write方法.在write方法中,我存储了最后7个字符,看它是否等于关闭body标签,然后我写了我的HTML块加上关闭的body标签,然后继续对文档的其余部分进行正常的写操作.
我觉得有人必须已经解决了这个问题,而且可能比我更优雅.我很欣赏如何使用servlet过滤器将内容插入响应的任何示例.
更新
回应评论,我也试图从http://www.oracle.com/technetwork/java/filters-137243.html实现CharResponseWrapper .这是我的代码:
PrintWriter out = response.getWriter();
CharResponseWrapper wrappedResponse = new CharResponseWrapper(
(HttpServletResponse)response);
chain.doFilter(wrappedRequest, wrappedResponse);
String s = wrappedResponse.toString();
if (wrappedResponse.getContentType().equals("text/html") &&
StringUtils.isNotBlank(s)) {
CharArrayWriter caw = new CharArrayWriter();
caw.write(s.substring(0, s.indexOf("</body>") - 1));
caw.write("WTF</body></html>");
response.setContentLength(caw.toString().length());
out.write(caw.toString());
}
else {
out.write(wrappedResponse.toString());
}
out.close();
Run Code Online (Sandbox Code Playgroud)
我也在包装请求,但该代码有效,不应影响响应.
我有两个我的网站使用的数据库,我有一个使用它们的应用程序.我需要编写一个TestCase来为两个数据库加载fixture.我使用的是数据库路由器,它在生产中运行良好,但在测试框架中,Django坚持对所有灯具使用"默认"数据库,即使对于指定其他数据库的模型也是如此.如何告诉Django针对另一个数据库运行一个夹具?
我的TestCase是定义列表:
class VerifierTestCase(TestCase):
fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
multi_db = True
Run Code Online (Sandbox Code Playgroud) 根据文档(http://jquerymobile.com/demos/1.2.0/docs/api/events.html),应该在执行jQuery移动页面的所有小部件和插件之后调用pageinit事件.所以,我相信我应该能够与该页面上的元素进行交互而不会在事件回调中肆无忌惮地进行交互.但是,我监听页面初始化,然后尝试与页面上的按钮进行交互,我收到以下错误:
在初始化之前无法调用按钮上的方法; 试图调用方法'禁用'
我已经把一个codepen放在一起,向你展示:
http://codepen.io/mattsnider/pen/mvcbD
是什么赋予了?pageinit是否无法正常工作或这是一个错误?
我在HEAD中的代码是:
<meta name="google-signin-clientid" content="XXXXXXX.apps.googleusercontent.com" />
<meta name="google-signin-cookiepolicy" content="single_host_origin" />
<meta name="google-signin-approvalprompt" content="auto" />
<meta name="google-signin-callback" content="signinCallback" />
<meta name="google-signin-scope" content="https://www.googleapis.com/auth/games" />
Run Code Online (Sandbox Code Playgroud)
这是我的按钮代码:
<span id="signinButton"><span class="g-signin"></span></span>
Run Code Online (Sandbox Code Playgroud)
这是JavaScript:
function signinCallback(authResult) {
if (authResult['status']['signed_in']) {
console.log('Signed In');
} else {
console.log('Sign-in state: ' + authResult['error']);
}
}
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
Run Code Online (Sandbox Code Playgroud)
当我单击登录按钮时,会打开一个对话框并对我进行身份验证,然后将以下内容打印到控制台:
我正在使用一个非常大的代码库,需要将文件从一个包移动到另一个包.但是,我没有本地的整个代码库,所以我不确定我是否找到并更新了对原始文件的每个引用.为了确保我没有破坏任何东西,我想保留原始文件,并简单地扩展我创建的新文件.理想情况下,它们都具有完全相同的名称.加班,我打算弃用并删除旧文件,但目前这似乎是最强大的解决方案.但是,我无法弄清楚如何让它在Java中工作.
这是新课程:
package myproject.util.http;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public abstract class MyServlet extends HttpServlet
{
public void service (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// implementation of service
}
}
Run Code Online (Sandbox Code Playgroud)
这是扩展新的旧类:
package myproject.util.net;
import myproject.util.http.MyServlet;
public abstract class MyServlet extends myproject.util.http.MyServlet
{
// this class was deprecated, use myproject.util.http.MyServlet instead
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到错误:
MyServlet is already defined in this compilation unit
Run Code Online (Sandbox Code Playgroud)
这是可能的,还是我将不得不为父类提出一个新名称.
我的公司有一个严格的代理服务器阻止我SSH服务器删除服务器,因此阻止我使用github.我花了最后一天关注网络上的例子,比如
但似乎没有任何效果.这是我的〜/ .ssh/config文件:
ProxyCommand /usr/local/bin/corkscrew proxy02.COMPANY_NAME.com 8080 %h %p
Host github.com
User git
Port 22
Hostname github.com
IdentityFile "/Users/msnider/.ssh/id_rsa"
IdentitiesOnly yes
TCPKeepAlive yes
Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
IdentityFile "/Users/msnider/.ssh/id_rsa"
IdentitiesOnly yes
TCPKeepAlive yes
Run Code Online (Sandbox Code Playgroud)
这是我尝试以下时收到的错误消息git pull --rebase:
Proxy could not open connnection to github.com: Forbidden
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
当我尝试SSH到github.com时,我得到了相同的禁止错误,但如果我指定了我的身份,我可以ssh到ssh.github.com:
ssh …Run Code Online (Sandbox Code Playgroud) 当我尝试通过按"添加"按钮安装手动打包的存折应用程序时,我会在标题中收到错误.我可以成功安装使用'signpass'工具打包的存折应用程序,但我现在需要在unix服务器上创建动态包.
我一直在尝试使用Web上的各种软件包手动打包我的存折应用程序,每个都给了我同样的错误.以下是我尝试的几个软件包:https: //github.com/maater/TCSH-PKPass https://github.com/devartis/passbook https://github.com/pcperini/PyPKPass
这是创建并压缩的pass.json(请注意,teamIdentifier和passTypeIdentifier都已填充):
{
"formatVersion" : 1,
"passTypeIdentifier" : "pass.votizen.membership",
"serialNumber" : "ASDF",
"webServiceURL" : "https://www.votizen.com/passbook/",
"authenticationToken" : "AUTH_TOKEN",
"teamIdentifier" : "MY_TEAM_IDENTIFIER",
"organizationName" : "Matthew Snider",
"description" : "Your voter registration card",
"logoText" : "VOTIZEN",
"labelColor": "#B7B0A8",
"foregroundColor" : "#5F6062",
"backgroundColor" : "#FCFAF5",
"generic" : {
"headerFields": [
{
"key" : "reg_date",
"label": "VOTER SINCE",
"value" : "2002"
}
],
"primaryFields" : [
{
"key" : "party",
"label": "REGISTERED PARTY",
"value" : "Democrat"
}
], …Run Code Online (Sandbox Code Playgroud)