Last active
September 3, 2018 12:36
-
-
Save MrFant/bc357dda882ac0866c6e9c80be22664c to your computer and use it in GitHub Desktop.
Servlet response and request interface
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cn.itcast.chapter04.response; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class ChineseServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
//response.setCharacterEncoding("utf-8"); | |
// response.setHeader("Content-Type","text/html;charset=utf-8"); | |
//设置字符编码 | |
response.setContentType("text/html;charset=utf-8"); | |
String data = "中国"; | |
PrintWriter out = response.getWriter(); | |
out.println(data); | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Referer头字段:当发送请求时,referer头字段的值为原网站地址,可用来查看请求来源。 | |
* 本文件就是一个利用referer来判断下载请求的来源是否是本站的下载管理demo。 | |
* 简称为“防盗链” | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class DownManagerServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
PrintWriter out = response.getWriter(); | |
// 获取referer头的值 | |
String referer = request.getHeader("referer"); | |
// 获取访问地址 | |
String sitePart = "http://" + request.getServerName(); | |
// 判断referer头是否为空,这个头的首地址是否以sitePart开始的 | |
if (referer != null && referer.startsWith(sitePart)) { | |
// 处理正在下载的请求 | |
out.println("dealing download ..."); | |
} else { | |
// 非法下载请求跳转到download.html页面 | |
RequestDispatcher rd = request | |
.getRequestDispatcher("/download.html"); | |
rd.forward(request, response); | |
} | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* output: | |
before including<br> | |
??<br> | |
URI:/IncludingServlet<br> | |
QueryString:null<br> | |
parameter p1:abc<br> | |
after including<br> | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class IncludedServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
// 设置响应时使用的字符编码 | |
response.setContentType("text/html;charset=utf-8"); | |
response.setCharacterEncoding("utf-8"); | |
PrintWriter out = response.getWriter(); | |
out.println("中国" + "<br>"); | |
out.println("URI:" + request.getRequestURI() + "<br>"); | |
out.println("QueryString:" + request.getQueryString() + "<br>"); | |
out.println("parameter p1:" + | |
request.getParameter("p1") + "<br>"); | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 当前代码使用include请求包含,由转发后的IncludedServlet显示结果可知, | |
* 请求包含不会改变uri,queryString。 | |
* 还由于在本代码中注释掉了ContentType的设置,所以最后输出的是纯文本(非html)并且中文显示为乱码, | |
* 即使在Included代码中设置了也没用,因为在那之前response对象已经生成。 | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class IncludingServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
// response.setContentType("text/html;charset=utf-8"); | |
PrintWriter out = response.getWriter(); | |
RequestDispatcher rd = request | |
.getRequestDispatcher("/IncludedServlet?p1=abc"); | |
out.println("before including" + "<br>"); | |
rd.include(request, response); | |
out.println("after including" + "<br>"); | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* HttpServletResponse 接口下的sendRedirect()方法实现重定向 | |
* 该方法通知客户端重新发送请求,浏览器的地址栏会发生变化。 | |
*/ | |
package cn.itcast.chapter04.response; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class LoginServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
// 用HttpServletRequest对象的getParameter()方法获取用户名和密码 | |
String username = request.getParameter("username"); | |
String password = request.getParameter("password"); | |
// 假设用户名和密码分别为:itcast和123 | |
if (("itcast").equals(username) &&("123").equals(password)) { | |
// 如果用户名和密码正确,重定向到 welcome.html | |
response.sendRedirect("/chapter04/welcome.html"); | |
} else { | |
// 如果用户名和密码错误,重定向到login.html | |
response.sendRedirect("/chapter04/login.html"); | |
} | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cn.itcast.chapter04.response; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class PrintServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
String data = "itcast"; | |
// 获取字节输出流对象 | |
// OutputStream out = response.getOutputStream(); | |
// out.write(data.getBytes());// 输出信息 | |
//使用getWriter()方法发送消息体 | |
PrintWriter print = response.getWriter(); | |
print.write(data); // 输出信息 | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cn.itcast.chapter04.response; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class RefreshServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
// 2秒后刷新并跳转到传智播客官网首页 | |
response.setHeader("Refresh", "2;URL=http://www.itcast.cn"); | |
// 每隔3秒定时刷新当前页面 | |
//response.setHeader("Refresh", "3"); | |
response.getWriter().println(new java.util.Date());// 输出当前时间 | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* RequestDispatcher 接口具有请求转发(forward)和请求包含(include)两种方法 | |
* 由于转发的是同一个request请求,所以可以在该请求中设置参数来传递数据 | |
* 当前代码使用forward转发请求,由转发后的ResultServlet显示结果可知, | |
* 请求转发forward会改变uri,queryString根据getRequestDispatcher()函数的方法而变。 | |
* note:但是请求转发不会改变浏览器URL地址栏。 | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.IOException; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class RequestForwardServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
// 将数据存储到request对象中 | |
request.setAttribute("company", "北京传智播客教育有限公司"); | |
// 从request接口中获取请求调度类实例 | |
RequestDispatcher dispatcher = request.getRequestDispatcher("/ResultServlet?p1=123"); | |
dispatcher.forward(request, response); | |
} | |
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 获取headers方法的相关方法,类似代码出现在servletConfig 和servletContext中 | |
* | |
* note: request有一个getHeaders方法(特殊情况下会用到),参见Evernote | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.IOException; | |
import java.io.PrintWriter; | |
import java.util.Enumeration; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class RequestHeadersServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
PrintWriter out = response.getWriter(); | |
// 获取请求消息中所有头字段 | |
Enumeration headerNames = request.getHeaderNames(); | |
// 使用循环遍历所有请求头,并通过getHeader()方法获取一个指定名称的头字段 | |
while (headerNames.hasMoreElements()) { | |
String headerName = (String) headerNames.nextElement(); | |
out.print(headerName + " : " | |
+ request.getHeader(headerName)+ "<br>"); | |
} | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* HttpServletRequest 接口中对获取请求行的相关方法, | |
* 相关解释参照Evernote笔记 | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class RequestLineServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
PrintWriter out = response.getWriter(); | |
// 获取请求行的相关信息 | |
out.println("getMethod : " + request.getMethod() + "<br>"); | |
out.println("getRequestURI : " + request.getRequestURI() + "<br>"); | |
out.println("getQueryString:"+request.getQueryString() + "<br>"); | |
out.println("getProtocol : " + request.getProtocol() + "<br>"); | |
out.println("getContextPath:"+request.getContextPath() + "<br>"); | |
out.println("getPathInfo : " + request.getPathInfo() + "<br>"); | |
out.println("getPathTranslated : " | |
+ request.getPathTranslated() + "<br>"); | |
out.println("getServletPath:"+request.getServletPath() + "<br>"); | |
out.println("getRemoteAddr : " + request.getRemoteAddr() + "<br>"); | |
out.println("getRemoteHost : " + request.getRemoteHost() + "<br>"); | |
out.println("getRemotePort : " + request.getRemotePort() + "<br>"); | |
out.println("getLocalAddr : " + request.getLocalAddr() + "<br>"); | |
out.println("getLocalName : " + request.getLocalName() + "<br>"); | |
out.println("getLocalPort : " + request.getLocalPort() + "<br>"); | |
out.println("getServerName : " + request.getServerName() + "<br>"); | |
out.println("getServerPort : " + request.getServerPort() + "<br>"); | |
out.println("getScheme : " + request.getScheme() + "<br>"); | |
out.println("getRequestURL : " + request.getRequestURL() + "<br>"); | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* request.getParameter() | |
* 尚不明确的是在不加上注释语句的情况下,获取中文参数是否会乱码,测试中是不会的,但书上说会 | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class RequestParamsServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
//设置request对象的解码方式 | |
// request.setCharacterEncoding("utf-8"); | |
String name = request.getParameter("username"); | |
// name=new String(name.getBytes("iso8859-1"),"utf-8"); | |
String password = request.getParameter("password"); | |
System.out.println("用户名:" + name); | |
System.out.println("密 码:" + password); | |
// 获取参数名为“hobby”的值 | |
String[] hobbys = request.getParameterValues("hobby"); | |
System.out.println("爱好:"); | |
for (int i = 0; i < hobbys.length; i++) { | |
System.out.print(hobbys[i] + ","); | |
} | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* output: | |
URI:/ResultServlet | |
QueryString:p1=123 | |
parameter p1:123 | |
公司名称:北京传智播客教育有限公司 | |
*/ | |
package cn.itcast.chapter04.request; | |
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class ResultServlet extends HttpServlet { | |
public void doGet(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
response.setContentType("text/html;charset=utf-8"); | |
// 获取PrintWriter对象用于输出信息 | |
PrintWriter out = response.getWriter(); | |
out.println("URI:" + request.getRequestURI() + "<br>"); | |
out.println("QueryString:" + request.getQueryString() + "<br>"); | |
out.println("parameter p1:" + | |
request.getParameter("p1") + "<br>"); | |
// 获取request请求对象中保存的数据 | |
String company = (String) request.getAttribute("company"); | |
if (company != null) { | |
out.println("公司名称:" + company + "<br>"); | |
} | |
} | |
public void doPost(HttpServletRequest request, | |
HttpServletResponse response)throws ServletException, IOException { | |
doGet(request, response); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> | |
<display-name>chapter04</display-name> | |
<welcome-file-list> | |
<welcome-file>index.html</welcome-file> | |
<welcome-file>index.htm</welcome-file> | |
<welcome-file>index.jsp</welcome-file> | |
<welcome-file>default.html</welcome-file> | |
<welcome-file>default.htm</welcome-file> | |
<welcome-file>default.jsp</welcome-file> | |
</welcome-file-list> | |
<servlet> | |
<servlet-name>PrintServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.response.PrintServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>PrintServlet</servlet-name> | |
<url-pattern>/PrintServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>ChineseServlet</display-name> | |
<servlet-name>ChineseServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.response.ChineseServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>ChineseServlet</servlet-name> | |
<url-pattern>/ChineseServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>RefreshServlet</display-name> | |
<servlet-name>RefreshServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.response.RefreshServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>RefreshServlet</servlet-name> | |
<url-pattern>/RefreshServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>LoginServlet</display-name> | |
<servlet-name>LoginServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.response.LoginServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>LoginServlet</servlet-name> | |
<url-pattern>/LoginServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>RequestLineServlet</display-name> | |
<servlet-name>RequestLineServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.RequestLineServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>RequestLineServlet</servlet-name> | |
<url-pattern>/RequestLineServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>RequestHeadersServlet</display-name> | |
<servlet-name>RequestHeadersServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.RequestHeadersServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>RequestHeadersServlet</servlet-name> | |
<url-pattern>/RequestHeadersServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>DownManagerServlet</display-name> | |
<servlet-name>DownManagerServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.DownManagerServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>DownManagerServlet</servlet-name> | |
<url-pattern>/DownManagerServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>RequestParamsServlet</display-name> | |
<servlet-name>RequestParamsServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.RequestParamsServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>RequestParamsServlet</servlet-name> | |
<url-pattern>/RequestParamsServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>RequestForwardServlet</display-name> | |
<servlet-name>RequestForwardServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.RequestForwardServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>RequestForwardServlet</servlet-name> | |
<url-pattern>/RequestForwardServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>ResultServlet</display-name> | |
<servlet-name>ResultServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.ResultServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>ResultServlet</servlet-name> | |
<url-pattern>/ResultServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>IncludingServlet</display-name> | |
<servlet-name>IncludingServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.IncludingServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>IncludingServlet</servlet-name> | |
<url-pattern>/IncludingServlet</url-pattern> | |
</servlet-mapping> | |
<servlet> | |
<description></description> | |
<display-name>IncludedServlet</display-name> | |
<servlet-name>IncludedServlet</servlet-name> | |
<servlet-class>cn.itcast.chapter04.request.IncludedServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>IncludedServlet</servlet-name> | |
<url-pattern>/IncludedServlet</url-pattern> | |
</servlet-mapping> | |
</web-app> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment