我正在进行Web开发培训,并且正在学习JSP和Servlets.我有一些知识HttpSession- 我在一些示例项目中使用过它.
在浏览器中,我看到了"删除cookie"的选项.如果我删除了cookie,它HttpSession也会删除它.
Cookie和会话是一样的吗?它们之间有什么区别?
如何从Java servlet返回JSON对象.
以前在使用servlet执行AJAX时,我返回了一个字符串.是否有需要使用的JSON对象类型,或者只是返回一个看起来像JSON对象的String,例如
String objectToReturn = "{ key1: 'value1', key2: 'value2' }";
Run Code Online (Sandbox Code Playgroud) 我在两个不同的容器(Tomcat和Jetty)上部署了一个webapp,但是他们用于提供静态内容的默认servlet有一种不同的方式来处理我想要使用的URL结构(详细信息).
因此,我希望在webapp中包含一个小servlet来提供自己的静态内容(图像,CSS等).servlet应具有以下属性:
If-Modified-Since标题(即自定义getLastModified方法)这样的servlet可以在某处使用吗?我能找到的最接近的是servlet书中的例子4-10.
更新:我想使用的URL结构 - 万一你想知道 - 只是:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
所以所有请求都应该传递给主servlet,除非它们是static路径.问题是Tomcat的默认servlet不考虑ServletPath(因此它在主文件夹中查找静态文件),而Jetty则这样(因此它在static文件夹中查找).
我正在制作一个简单,非常轻巧的前置控制器.我需要将请求路径与不同的处理程序(操作)匹配,以便选择正确的路径.
在我的本地计算机上HttpServletRequest.getPathInfo()并HttpServletRequest.getRequestURI()返回相同的结果.但我不确定它们会在生产环境中返回什么.
那么,这些方法和我应该选择什么之间的区别是什么?
我正在尝试使用eclipse for Java EE来开发Web应用程序.
我需要使用Tomcat作为我的服务器.我已经下载了Tomcat并且它正在运行.但是我的程序没有编译.
我收到以下错误:
导入javax.servlet无法解析.
我需要做什么?
我<error-page>在web.xml中使用元素来指定用户遇到某个错误时的友好错误页面,例如代码为404的错误:
<error-page>
<error-code>404</error-code>
<location>/Error404.html</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
但是,我希望如果用户不符合指定的任何错误代码<error-page>,他或她应该看到默认错误页面.如何使用web.xml中的元素执行此操作?
在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:
<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)
将此代码复制到jsp页面(testpage.jsp)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.
谢谢.
如何删除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) 我有一个在Tomcat上运行的Java Web应用程序.我想加载静态图像,这些图像将在Web UI和应用程序生成的PDF文件中显示.此外,还将通过Web UI上传添加和保存新图像.
通过将静态数据存储在Web容器中但从Web容器外部存储和加载它们来解决这个问题并不是一个问题.
我不想在此时使用像Apache这样的单独的Web服务器来提供静态数据.我也不喜欢将图像以二进制形式存储在数据库中.
我已经看到一些建议,比如将图像目录作为指向Web容器外部目录的符号链接,但这种方法是否适用于Windows和*nix环境?
有人建议编写一个过滤器或servlet来处理图像服务,但这些建议非常模糊和高级别,没有指向如何实现这一目标的更详细信息.