HttpServletRequest
request.getRemoteAddr()//获取远程IP地址
HttpServletResponse
response.setContentType("text/html;charset=gbk")//设置发送方式和字符集
response.getWriter();//获取输出对象,构造PrintWriter对象
返回响应
利用:
1) PrintWriter out = response.getWriter // 用于返回文本数据给客户端
2) ServletOutputStream out = response.getOutputStream // 用于返回二进制数据给客户端
Servlet中从request获得参数的方法:
String getParameter(String);
有此参数但无值返回"";
无此参数则返回:null
String[] getParameterValues(String);
Map getParameterMap();
Enumeration getParameterNames();获得的是参数的名字,需要用名字再去获得参数的值
1)请阐述什么是ServletContext?
一种servlet服务的上下文,每一个servlet实例都对应在一个web application中,都属于这个上下文,
即为这个servletContext.
在一个servlet服务中,通过getServletContext()方法,获得上下文;
2) 如何在一个Servlet中调用另外一个Servlet;如何在两个Servlet之间传递数据
getServletContext().getRequestDispatcher("/xxxx/xxxx").forward(request,response);
request.setAttribute("xxxx",xxxx);------>requeset.getAttribute("xxxx");
Servlet中的方法:
init(ServletConfig);//初始化Servlet用
init中有异常则servlet直接被回收,无异常则继续调用service()方法
覆盖父类init(ServletConfig)可能会出错(因为父类函数会对config做保存处理,以便以后使用),可以调用super(config)解决
service(request,response);
//具体会调用HttpServlet的doGet,doPost(程序员在具体的servlet程序中覆盖了)方法实现功能,
destory();//销毁servlet实例的时候调用
Servlet生命周期:
装载,init(),service(),destory()
Servlet中进行页面转发:
getServletContext().getRequestDispatcher("/user/user_list.jsp").forward(request, response);
或者:
response.sendRedirect(request.getContextPath() + "/find.do");
Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别//转载
假定你的web application 名称为news,你在浏览器中输入请求路径:
http://localhost:8080/news/main/list.jsp
则执行下面向行代码后打印出如下结果:
1、 System.out.println(request.getContextPath());
打印结果:/news
2、System.out.println(request.getServletPath());
打印结果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
打印结果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/"));
打印结果:F:/Tomcat 6.0/webapps/news/test
///request详解
1) getParameter(String name) 一般用它读取表单中参数
(2) getProtocol() 获取客户端向服务器端传送数据所依据的协议名称。
(3)getRemoteAddr() 获取客户端的IP地址。
(4)getRemoteHost() 获取客户端的名字。
(5)getServerName() 获取服务器的名字。
(6)getServerPort() 获取服务器的端口号。
(7)getHeader()获取客户端的浏览器类型。
1 object getAttribute(String name) 返回指定属性的属性值
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
3 String getCharacterEncoding() 返回字符编码方式
4 int getContentLength() 返回请求体的长度(以字节数)
5 String getContentType() 得到请求体的MIME类型
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流
7 String getParameter(String name) 返回name指定参数的参数值
8 Enumeration getParameterNames() 返回可用参数名的枚举
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
10 String getProtocol() 返回请求用的协议类型及版本号
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等
12 String getServerName() 返回接受请求的服务器主机名
13 int getServerPort() 返回服务器接受此请求所用的端口号
14 BufferedReader getReader() 返回解码过了的请求体
15 String getRemoteAddr() 返回发送此请求的客户端IP地址
16 String getRemoteHost() 返回发送此请求的客户端主机名
17 void setAttribute(String key,Object obj) 设置属性的属性值
18 String getRealPath(String path) 返回一虚拟路径的真实路径
<%@page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>getRequest</title>
</head>
<body>
<%
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Scheme: " + request.getScheme() + "<br>");
out.println("Server Name: " + request.getServerName() + "<br>");
out.println("Server Port: " + request.getServerPort() + "<br>");
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo() + "<br>");
out.println("Remote Addr: " + request.getRemoteAddr() + "<br>");
out.println("Remote Host: " + request.getRemoteHost() + "<br>");
out.println("Character Encoding: " + request.getCharacterEncoding() + "<br>");
out.println("Content Length: " + request.getContentLength() + "<br>");
out.println("Content Type: " + request.getContentType() + "<br>");
out.println("Auth Type: " + request.getAuthType() + "<br>");
out.println("HTTP Method: " + request.getMethod() + "<br>");
out.println("Path Info: " + request.getPathInfo() + "<br>");
out.println("Path Trans: " + request.getPathTranslated() + "<br>");
out.println("Query String: " + request.getQueryString() + "<br>");
out.println("Remote User: " + request.getRemoteUser() + "<br>");
out.println("Session Id: " + request.getRequestedSessionId() + "<br>");
out.println("Request URI: " + request.getRequestURI() + "<br>");
out.println("Servlet Path: " + request.getServletPath() + "<br>");
out.println("Accept: " + request.getHeader("Accept") + "<br>");
out.println("Host: " + request.getHeader("Host") + "<br>");
out.println("Referer : " + request.getHeader("Referer") + "<br>");
out.println("Accept-Language : " + request.getHeader("Accept-Language") + "<br>");
out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding") + "<br>");
out.println("User-Agent : " + request.getHeader("User-Agent") + "<br>");
out.println("Connection : " + request.getHeader("Connection") + "<br>");
out.println("Cookie : " + request.getHeader("Cookie") + "<br>");
out.println("Created : " + session.getCreationTime() + "<br>");
out.println("LastAccessed : " + session.getLastAccessedTime() + "<br>");
%>
</body>
</html>