如何删除Java servlet中的cookie?
我试过这个:http: //www.jguru.com/faq/view.jsp?EID = 42225
编辑:以下现在成功运作它似乎是以下的组合:
response.setContentType("text/html");
Run Code Online (Sandbox Code Playgroud)
和
cookie.setMaxAge(0);
Run Code Online (Sandbox Code Playgroud)
在我做之前:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(-1);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)
根据文档关闭浏览器时,cookie会过期.
负值表示cookie不会持久存储,并在Web浏览器退出时被删除.零值会导致cookie被删除.
要使Cookie过期的完整工作代码段是:
//remove single signon cookie if it hasn't been validated yet
response.setContentType("text/html");
Cookie cookie = new Cookie(SSORealm.SSO_COOKIE_NAME, "");
cookie.setDomain(SSORealm.SSO_DOMAIN);
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud) 方法request.getRequestURI()返回带有上下文路径的URI.
例如,如果一个应用程序的基本网址http://localhost:8080/myapp/(即上下文路径是MYAPP),和我打电话request.getRequestURI()了http://localhost:8080/myapp/secure/users,它将返回/myapp/secure/users.
有没有办法我们只能得到这个部分/secure/users,即没有上下文路径的URI?
两个标签都包含来自另一个页面的内容.
那么这两个标签之间的确切区别是什么?
我一直在试验各种Java代码试图想出一些东西,它将编码一个包含引号,空格和"奇异"Unicode字符的字符串,并产生与JavaScript的encodeURIComponent函数相同的输出.
我的折磨测试字符串是:"A"B±"
如果我在Firebug中输入以下JavaScript语句:
encodeURIComponent('"A" B ± "');
Run Code Online (Sandbox Code Playgroud)
- 然后我得到:
"%22A%22%20B%20%C2%B1%20%22"
Run Code Online (Sandbox Code Playgroud)
这是我的小测试Java程序:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
Run Code Online (Sandbox Code Playgroud)
- 该计划输出:
URLEncoder.encode returns %22A%22+B+%C2%B1+%22 getBytes returns "A" B ± "
关闭,但没有雪茄!使用Java编码UTF-8字符串的最佳方法是什么,以便它产生与JavaScript相同的输出encodeURIComponent?
编辑:我很快就使用Java 1.4迁移到Java 5.
我查看了JavaDoc参考,虽然我理解@see(各种链接)和{@inheritDoc}(超类JavaDoc注释的导出)之间的基本区别,但我需要澄清事情的实际实现方式.
在Eclipse IDE中,当我为继承的方法选择"Generate Element Comments"时(从接口或toString()覆盖等),它会创建以下注释
/* (non-Javadoc)
* @see SomeClass#someMethod()
*/
Run Code Online (Sandbox Code Playgroud)
如果我需要产生的JavaDoc我应该离开它,取代@see用{@inheritDoc},或者把它真正的Javadoc这样的:
/**
* {@inheritDoc}
*/
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我是否应该保持类#方法标志?
Spring中的HandlerInterceptor现在可以配置为仅在某些URL上使用调用<mvc:interceptors>.
Servlet过滤器可以实现相同的功能(日志记录,安全性等).那应该用哪一个?
我认为使用Interceptors,可以使用ModelAndView对象与模型一起工作,因此它具有更多优势.任何人都可以提出过滤器或拦截器比另一个有优势的场景吗?
我最近一直在阅读有关不可变字符串的原因为什么字符串在Java和.NET中不可变?而为什么.NET字符串是不可改变的?以及为什么D选择不可变字符串的一些东西.似乎有很多好处.
更不用说大多数新语言都有不可变的字符串,D2.0,Java,C#,Python等.
C++会从不可变字符串中受益吗?
是否有可能在c ++(或c ++ 0x)中实现具有所有这些优点的不可变字符串类?
更新:
在不可变字符串const_string和fix_str上有两次尝试.五年内都没有更新.它们甚至被使用过吗?为什么const_string没有进入boost?
我遇到了一个非常奇怪的问题这是一个非常简单的JDBC连接到Oracle数据库的用法
OS: Ubuntu
Java Version: 1.5.0_16-b02
1.6.0_17-b04
Database: Oracle 11g Release 11.1.0.6.0
Run Code Online (Sandbox Code Playgroud)
当我使用jar文件时
OJDBC14.jar它每次都连接到数据库当我使用jar文件时
OJDBC5.jar它连接了一些时间,有时它会抛出一个错误(如下所示)如果我用Java 6重新编译并使用
OJDBC6.jar我获得相同的结果如OJDBC5.jar
我需要JODB5.jar中的特定功能,这些功能在OJDBC14.jar中不可用
有任何想法吗
错误
> Connecting to oracle
java.sql.SQLException: Io exception: Connection reset
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:494)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at TestConnect.main(TestConnect.java:13)
Run Code Online (Sandbox Code Playgroud)
码
以下是我正在使用的代码
import java.io.*;
import java.sql.*;
public class TestConnect {
public static void main(String[] args) {
try {
System.out.println("Connecting to oracle"); …Run Code Online (Sandbox Code Playgroud) 我刚读完这篇文章:Java-5 ThreadPoolExecutor相对于Java-7 ForkJoinPool有什么优势?觉得答案不够直接.
您能用简单的语言和示例来解释,Java 7的Fork-Join框架与旧解决方案之间的权衡取舍是什么?
我还阅读了Google关于Java提示的#1热门提示:何时从javaworld.com 使用ForkJoinPool vs ExecutorService但文章没有回答标题问题时,它主要讨论api差异......
我有一个抽象类Monitor.java,它由Class EmailMonitor.java子类化.
方法:
public abstract List<? extends MonitorAccount> performMonitor(List<? extends MonitorAccount> accounts)
Run Code Online (Sandbox Code Playgroud)
在Monitor.java中定义,必须在EmailMonitor.java中重写.
我目前在EmailMonitor.java中重写了如下方法:
@Override
public List<EmailAccount> performMonitor(List<EmailAccount> emailAccounts) {
//...unrelated logic
return emailAccounts;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生编译时错误:
Name clash: The method performMonitor(List<EmailAccount>) of type EmailMonitor has the same erasure as performMonitor(Lis<? extends MonitorAccount> emailAccounts) of type Monitor but does not override it
EmailAccount是一个子类MonitorAccount,所以(至少在我看来)以这种方式覆盖它是完全有道理的.虽然编译器对我的逻辑不满意,但是如何在保持编译时检查以确保所有调用EmailMonitor.performMonitor()接收列表EmailAccount而不是其他类型的MonitorAccount?
java ×8
servlets ×2
c++ ×1
commenting ×1
concurrency ×1
cookies ×1
fork-join ×1
generics ×1
immutability ×1
inheritance ×1
interceptor ×1
javadoc ×1
javascript ×1
jdbc ×1
jsp ×1
oracle ×1
spring ×1
spring-mvc ×1
string ×1
unicode ×1
utf-8 ×1