servlet随笔-web的常用对象

1.HttpServletRequest

主要作用是用来接受客户端发送过来的请求信息

1). 常用方法

//获取客户端发出请求时的完整URL
String strUrl = request1.getRequestURI() + " ";//加"  "是为了防止空指针异常
//获取请求行中的资源名称部分(项目名称开始)
String strUrI = request1.getRequestURI() + " ";
//获取请求行中的参数部分
String strQuery = request1.getQueryString() + " ";
//获取客户端的请求方式
String strMethod = request1.getMethod() + " ";
//获取http版本号
String strPro = request1.getProtocol() + " ";
//获取webapp名字
String strCon = request1.getContextPath();

2). 获取请求头

//获取请求头的站点名
request.getHeader("host");
//获取请求头名称的枚举集合
Enumeration<String> enumerations = request.getHeaderNames();
		while (enumerations.hasMoreElements()) {
			String string = (String) enumerations.nextElement();
			System.out.println(string);
		}

3).针对请求乱码解决

POST请求:Tomcat8及以上和Tomcat7及以下版本都会乱码
GET请求:Tomcat8及以上不会乱码,Tomcat7及以下会乱码

方法一

//设置请求的编码 (只针对于POST请求有效,必须在接收所有的数据之前设定)
request.setCharacterEncoding("UTF-8");

方法二

new String(request.getParameter("参数名").getBytes("ISO-8859-1"),"UTF-8");
//无论是GET请求还是POST请求都适用。一次只能处理一个参数

方法三(推荐)

response.setContentType("text/html;charset=UTF-8");

4).获取客户端请求参数

//获取指定名称的参数(必须掌握)
req.getParameter("uname");

5)请求转发

请求转发,是一种服务器行为,当客户端请求到达后,服务器进行转发,此时会将对象进行保存,地址栏中的URL地址不会改变,得到响应后,服务器再将响应发送给客服端,从始至终只有一个请求发出

//转发到ser04
request.getRequestDispatcher("ser04").forward(request,response)

6)request作用域对象

//设置request域对象
request.setAttribute("user1");

//移除域对象
request.removeAttribute("user1");

//获取域对象的值
request.getAttribute("user1");

2.HttpServletResponse

1).常用方法

//添加指定的键值到响应头信息中
response.addHeader("name", "admin");
//获取输出字节流
response.getWriter()
//获取输出的字节流
response.getOutputStream()

2).页面刷新和自动跳转

//刷新
response.setHeader("refresh","2");
//自动定时跳转
response.setHeader("refresh","3;URL=http://www.baidu.com");

3).数据响应

//两者不能同时使用
//制衡获取字符流
PrintWriter writer = resp.getWriter();
writer.write("<h4>Hello Servlet</h4>");
//能响应一切数据
OutputStream outputStream = resp.getOutputStream();
outputStream.write("<h4>Hello MyServlet</h4>".getBytes());

4).响应图片

// 设置响应类型
resp.setContentType("image/jpeg");
// 得到项目在服务器中的真实路径
String path  = req.getServletContext().getRealPath("/");
// 得到图片的存放路径
String filePath = path + "/WEB-INF/jay.jpg";
// 通过路径得到file对象
File file = new File(filePath);
// 判断文件是否存在并且是一个标准文件
if (file.exists() && file.isFile()) {
	// 得到输出流
	ServletOutputStream out = resp.getOutputStream();
	// 得到file对象的输入流
	InputStream in = new FileInputStream(file);
	// 输出
	byte[] car = new byte[1024];
	int len = 0;
	while((len = in.read(car)) != -1) {
		out.write(car, 0, len);
	}
	// 关闭资源
	out.flush(); // 刷新流
	in.close();
	out.close();
	} else {
		System.out.println("文件不存在!");
}

5).重定向

请求转发(request.getRequestDispatcher().forward())重定向(response.sendRedirect())
一次请求,数据在request域中共享两次请求,request域中数据不共享
服务端行为客户端行为
地址栏不会发生变化客户端发生变化
地址定位到站点后地址栏发生变化
//请求转发
req.getRequestDispatcher("index.html").forward(req, resp); 
//重定向
resp.sendRedirect("index.html");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值