servlet中的细节

Get方法有大小限制:1024个字符。这些信息使用 Query_String头传递,并通过Query_String环境变量访问。
Post方法:请求体信息使用FromData头传递。
读取所有表单参数:getParamterNames()方法。枚举类型。
遍历枚举:使用hasMoreElements()来确定何时停止循环,使用nextElement()方法来获取每个参数名称。

Servlet请求:
String host = req.getHeader("Host"); // localhost:8080 主机和端口
String referer = req.getHeader("Referer"); // http://localhost:8080/myservlet/index.jsp 页面1链接到页面2,到页面2后,页面1的URL地址
String contextPath = req.getContextPath(); // /myservlet
String requestURI = req.getRequestURI(); // /myservlet/DisplayHeader
StringBuffer requestURL = req.getRequestURL(); // http://localhost:8080/myservlet/DisplayHeader
String requestedSessionId = req.getRequestedSessionId(); // F06D8A91D7A213B23BD42107CFA68601 Session 会话 id
int serverPort = req.getServerPort(); // 8080 端口号

http://localhost:8080/myservlet/DisplayHeader?method=show 详解
http: 传输协议
localhost: 主机地址
8080: 端口号
myservlet: contextPath
DisplayHeader: servletPath
method=show: 参数

Servlet 响应:
resp.setContextType("text/html");
PrintWriter out = resp.getWriter();
out.print("hello world!");

一个有意思的小栗子(每隔5秒刷新页面):
resp.setIntHeader("Refresh", 5);
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;

resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.print(CT);

Servlet过滤器目的:
在它们访问后端资源之前,拦截这些来自客户端的请求
在他们发送回客户端之前,处理这些来自服务端的响应

规范建议的各种类型的过滤器:
身份验证过滤器。
数据压缩过滤器。
加密过滤器。
触发访问事件资源的过滤器。
图像转换过滤器。
日志记录和审核过滤器。
MIME-类型链过滤器。
Tokenizing 过滤器。
转换 XML 内容的 XSL/T 过滤器。

filter-mapping 顺序决定了过滤顺序

Cookie的键和值不能包含后边的任意一个字符: [ ] ( ) = , " / ? @ : ;

Session:
删除整个会话:你可以调用 public void invalidate() 方法来删除整个会话。
设置会话超时:你可以调用 public void setMaxInactiveInterval(int interval) 方法来单独设置会话超时。
web.xml 配置 Session 会话超时(分钟):
<session-config>
<session-timeout>15</session-timeout>
</session-config>

时间: 2024-10-07 19:42:25

servlet中的细节的相关文章

jsp/servlet中的编码问题

首先声明以下只是我个人的看法,有部分观点与网上人云亦云的观点不一样,不过凡事必恭亲,我还是相信自己测试的结果 推荐一个很好地URL编码详解http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 与网上的共识是 JSP中 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"

Servlet的一些细节(2)

1. Servlet的创建时间 Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器 针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其他请求服务,直至web容器退出,Servlet实例对象才会销毁. Servlet对象一旦被创建,就会执行init方法,一旦销毁就会执行destroy方法.可以通过这两个方法观察Servlet对象的生命周期 所以如果编写了一个

servlet必知细节(一)

servlet必知细节(一) 今天复习了一下servlet,有过一些编程经验后,与最初学习servlet相比,对servlet理解的角度不同了,最初只是学习了如何写一个servlet,api怎么用,现在从更深处了解了servlet. 1.servlet接口实现关系 HttpServlet继承GenericServlet,GenericServlet实现Servlet接口. 2.生命周期方法 其中Servlet接口有几个生命周期方法: init(),service(),destroy()为三个生命

Servlet的一些细节

1.  Servlet程序必须映射到一个URL地址 由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址.这个工作在web.xml文件中使用<servlet>元素和<servlet-maping>元素完成 <servlet>用于注册Servlet,<servlet-name>和<servlet-Class>分别用于设置Servlet的注册名称和完整类名 一个<servlet-maping>元素用于

在Servlet中出现一个输出中文乱码的问题(已经解)。

在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResponse response) throws ServletException, IOException { //PrintWriter out = response.getWriter();在还没有给response指定编码格式时就获取了他的输出流,所以一直乱码 reqeust.setCharact

servlet必知细节(三)-- DefaultServlet

servlet必知细节(三)-- DefaultServlet 缺省servlet:org.apache.catalina.servlets.DefaultServlet,作用是处理其他servlet处理不到的请求 我们知道,在我们工程的web.xml中,会配置servlet映射,但是有些访问无法找到映射,如一些静态图片,一些js文件等,那服务器是如何返回给客户端的呢? 要回答上面的问题,我们必须详细了解下DefaultServlet,下面我们看tomcat的官方解释. 1.什么是Default

Servlet中保存的cookie值读取不到

在设计登录时记住密码功能时,很多时候回使用cookie,在Servlet中保存cookie时,再次访问登录页面,没有读取到保存的cookie值,代码如下: 1 Cookie idCookie = new Cookie("id",String.valueOf(user.getId())); 2 Cookie nameCookie = new Cookie("username",URLEncoder.encode(user.getName(), "utf-8&

JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="text" name="cmt&q

Servlet中service方法

在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽象类 以及HttpServlet类中都有service方法,那么为什么我们继承HttpSevlet类时不要重写service 而要重写doGet doPost呢?service的作用是什么捏?? 正如上文中所说的,Servlet中,service方法是一直存在的,因为最高层的接口Servlet(像H