Javaweb崔希凡---Day10---requestrespone

Myeclipse的配置:

  1. General --> Workspace --> UTF-8
  2. General --> Editors --> Associations --> JSP --> MyEclipse JSP Editor
  3. 搜索jsp --> UTF-8
  4. Java --> Installed JREs --> 添加
  5. Tomcat
  6. 去除MyEclise自带tomcat
  7. General --> Startup and Shutdown --> MyEclipse Derby

如果你是win7系统,还要修改字体:
第一步:C:\Windows\Fonts,找到Courier New,鼠标右键–>显示
第二步:Ceneral --> Appearance --> Colors and Fonts --> Basic --> Text Font --> Edit,选择Courier New字体

请求响应流程图

在这里插入图片描述
在这里插入图片描述

response对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setStatus(302);   //设置响应码为302,表示重定向
		response.setHeader("Location", "http://www.itcast.cn");  //设置新请求的URL
	}
}
package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 演示发送状态码
 * @author cxf
 *
 */
public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.sendError(404, "您访问的资源存在,就不给你看!");
	}
}

5.3 便捷的重定向方式

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.sendRedirect("http://www.itcast.cn");
	}
}

在这里插入图片描述

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.sendRedirect("/hello/BServlet");
	}
}

重定向的URL地址为:http://localhost:8080/hello/BServlet。
在这里插入图片描述
response.setHeader(“Refresh”, “5; URL=http://www.itcast.cn”);

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 演示定时刷新
 * @author cxf
 * 
 * 设置一个Refresh,它表示定时刷新!
 */
public class DServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 下面是用来发送响应体!
		 */
		PrintWriter writer = response.getWriter();
		writer.print("欢迎XXX登录!5秒钟后会自动跳转到主页!您看到的一定是乱码!");
		/*
		 * 设置名为Refresh的响应头
		 */
		response.setHeader("Refresh", "5;URL=/day10_1/EServlet");
	}
}

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().print("还是乱码!");
	}
}

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 禁用浏览器缓存
 * @author cxf
 *
 */
public class FServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * Cache-Control、pragma、expires
		 */
		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("pragma", "no-cache");
		response.setDateHeader("expires", -1);
		response.getWriter().print("hello hello!");
	}
}

在这里插入图片描述
在这里插入图片描述

package cn.itcast.servlet;

import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

public class GServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
/*
		String s = "Hello outputStream";
		byte[] bytes = s.getBytes();
		response.getOutputStream().write(bytes);
*/
		/**
		 * 演示响应字节数据
		 */
		// 把一张图片读取到字节数组中
		String path = "F:/F/白冰.jpg";
		FileInputStream in = new FileInputStream(path);
//		byte[] bytes = IOUtils.toByteArray(in);//读取输入流内容的字节到字节数组中。
//		response.getOutputStream().write(bytes);
		IOUtils.copy(in, response.getOutputStream());
	}
}

request

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 演示:获取客户端的IP地址、获取请求方式、获取User-Agent,得到客户端的信息(操作系统 浏览器)。
 * @author cxf
 *
 */
public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String addr = request.getRemoteAddr();//获取客户端的IP地址
		
		response.sendRedirect("http://www.baidu.com");
		if(true) return;
		
//		System.out.println("IP: " + addr);
//		System.out.println("请求方式:" + request.getMethod());//获取请求方式
		String userAgent = request.getHeader("User-Agent");//获取名为User-Agent的请求头!
		/*
		 * Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
		 */
		// 是否包含Chrome,如果包含,说明用户使用的是google浏览器
		if(userAgent.toLowerCase().contains("chrome")) {
			System.out.println("您好:" + addr + ", 你用的是谷歌");
		} else if(userAgent.toLowerCase().contains("firefox")) {
			System.out.println("您好:" + addr + ", 你用的是火狐");
		} else if(userAgent.toLowerCase().contains("msie")) {
			System.out.println("您好:" + addr + ", 你用的是IE");
		}
	}
}

在这里插入图片描述

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 通过request来获取url的相关方法
		 */
		response.getWriter().print(request.getScheme() + "<br/>");//获取请求协议
		response.getWriter().print(request.getServerName() + "<br/>");//获取服务器名称
		response.getWriter().print(request.getServerPort() + "<br/>");//获取服务器端口号
		response.getWriter().print(request.getContextPath() + "<br/>");//获取项目名称
		response.getWriter().print(request.getServletPath() + "<br/>");//获取Servlet路径
		response.getWriter().print(request.getQueryString() + "<br/>");//获取参数部分
		response.getWriter().print(request.getRequestURI() + "<br/>");//获取请求URI
		response.getWriter().print(request.getRequestURL() + "<br/>");//获取请求URL
	}
}

防盗链:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
  <head>
    <title>a.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
<a href="/day10_2/BServlet">xxx</a>
  </body>
</html>

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * 使用Referer请求头,来防盗链
		 */
		String referer = request.getHeader("Referer");
		System.out.println(referer);
		if(referer == null || !referer.contains("localhost")) {
			response.sendRedirect("http://www.baidu.com");
		} else {
			System.out.println("hello!");
		}
	}
}

在这里插入图片描述
在这里插入图片描述
a.html :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
  <head>
    <title>a.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
<h1>测试请求参数</h1>
<a href="/day10_3/AServlet?xxx=XXX&yyy=YYY">点击这里</a>
<hr/>
<form action="/day10_3/AServlet" method="post">
  用户名:<input type="text" name="username"/><br/>
  密 码:<input type="password" name="password"/><br/>
  爱 好:<input type="checkbox" name="hobby" value="cf"/>吃饭
  <input type="checkbox" name="hobby" value="sj"/>睡觉
  <input type="checkbox" name="hobby" value="ddm"/>打代码
  <br/>
  <input type="submit" value="提交"/>
</form>
  </body>
</html>

AServlet.java :

package cn.itcast.servlet;

import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 演示request获取请求参数!
 * @author cxf
 *
 */
public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("GET: " + request.getParameter("xxx"));
		System.out.println("GET: " + request.getParameter("yyy"));
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String[] hobby = request.getParameterValues("hobby");
		
		System.out.println(username + ", " + password + ", " + Arrays.toString(hobby));
		
		/*
		 * 测试获取所有请求参数的名称
		 */
		Enumeration names = request.getParameterNames();
		while(names.hasMoreElements()) {
			System.out.println(names.nextElement());
		}
		
		/*
		 * 获取所有请求参数,封装到Map中
		 */
		Map<String,String[]> map = request.getParameterMap();
		for(String name : map.keySet()) {
			String[] values = map.get(name);
			System.out.println(name + "=" + Arrays.toString(values));
		}
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package cn.itcast.servlet.forward;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 演示请求转发
 * @author cxf
 *
 */
public class OneServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("OneServlet...");
		response.setHeader("aaa", "AAA");//设置响应头
		
//		for(int i = 0; i < 1024 * 24 + 1; i++) {
//			response.getWriter().print("a");//设置响应体
//		}
		
		/*
		 * 向reuqest域中添加一个属性
		 */
		request.setAttribute("username", "zhangsan");
		
		// 等同与调用TwoServlet的service()方法。
		request.getRequestDispatcher("/TwoServlet").forward(request, response);//请求转发
		
	}
}

package cn.itcast.servlet.forward;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TwoServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(request.getAttribute("username"));
		System.out.println("TwoServlet...");
		response.getWriter().print("hello TwoServlet!");//设置响应体
	}
}

package cn.itcast.servlet.include;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OneServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("OneServlet...");
		response.setHeader("aaa", "AAA");//设置响应头
		
		response.getWriter().print("aaaa");//设置响应体
		request.getRequestDispatcher("/TwoServlet").include(request, response);//请求包含
	}
}

package cn.itcast.servlet.include;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TwoServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("TwoServlet...");
		response.getWriter().print("hello TwoServlet!");//设置响应体
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编码

在这里插入图片描述

1. 响应编码

在这里插入图片描述
在这里插入图片描述

2. 请求编码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
  <head>
    <title>form.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
    This is my HTML page. <br>
    <form action="/day10_4/AServlet" method="post">
    用户名:<input type="text" name="username" value="李四"/><br/>
    <input type="submit" value="提交"/>
    </form>
    <hr/>
    <a href="/day10_4/AServlet?username=张三">GET</a>
  </body>
</html>

package cn.itcast.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 1. 先获取来使用iso的错误字符串
		 * 2. (iso)回退,(使用utf-8)重编
		 */
		String name = request.getParameter("username");
		byte[] b = name.getBytes("iso-8859-1");
		name = new String(b, "utf-8");
		
		System.out.println(name);
	}

	@Override
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/*
		 * 1. 在获取参数之前,需要先调用request.setCharacterEncoding("utf-8");
		 * 2. 使用getParameter()来获取参数
		 */
		req.setCharacterEncoding("utf-8");
		String username = req.getParameter("username");
		System.out.println(username);
	}
}

3. URL编码

在这里插入图片描述
在这里插入图片描述

package cn.itcast.servlet;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Arrays;

import org.junit.Test;

/**
 * URL编码
 * @author cxf
 *
 */
public class Demo {
	/*
	 * [-27, -68, -96, -28, -72, -119]
	 * [%E5, %BC, %A0, -28, -72, -119]%E5%BC%A0%E4%B8%89
	 */
	@Test
	public void fun1() throws UnsupportedEncodingException {
		String name = "张三";
//		byte[] bytes = name.getBytes("utf-8");
//		System.out.println(Arrays.toString(bytes));
		
		String s = URLEncoder.encode(name, "UTF-8");
		System.out.println(s);
		
		s = URLDecoder.decode(s, "utf-8");
		System.out.println(s);
	}
}

路径

在这里插入图片描述

package cn.itcast.servlet;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;
import org.junit.Test;

/**
 * 演示ClassLoader和Class获取类路径资源
 * @author cxf
 *
 */
public class Demo2 {
	/*
	 * 说ClassLoader获取资源时,不能以“/”开头!
	 */
	@Test
	public void fun1() throws IOException {
		ClassLoader cl = Demo2.class.getClassLoader();//得到类加载器
		InputStream in = cl.getResourceAsStream("a.html");//让类加载器去类路径下查找资源 
		System.out.println(IOUtils.toString(in));
	}
	
	/*
	 * 使用class来加载类路径下的资源1
	 */
	@Test
	public void fun2() throws IOException {
		Class c = Demo2.class;
		InputStream in = c.getResourceAsStream("/a.html");//与类加载器的效果相同
		System.out.println(IOUtils.toString(in));
	}
	
	/*
	 * 使用class来加载类路径下的资源2
	 */
	@Test
	public void fun3() throws IOException {
		Class c = Demo2.class;
		InputStream in = c.getResourceAsStream("a.html");//到当前Class对应的.class文件所在目录去加载
		System.out.println(IOUtils.toString(in));
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值