Servlet 的操作
1.setStatus(“状态码”):设置其状态码
2.resp.sendError(“状态码”,“提示信息”);设置状态码和提示信息
3.HttpServletResponse:来操作器响应头
4.GZIPOutputStream:压缩流
5.ByteArrayOutputStream:内存流
6. resp.setHeader(“Content-Encoding”,“gzip”):设置服务器的压缩格式
7.resp.setHeader(“Content-length”,b.length+""):设置文本的长度
8.resp.setHeader(“Accept”,“bytes”):规定其为设置数组
9. resp.setHeader(“Cache-Control”,“no-cache”):不加载浏览器缓存中的数据
10.this.getServletContext().getResourceAsStream("/WEB-INF/1.jpg"):获取是发布到服务的图片的地址,返回值是一个输入流对象 InputStream
11.resp.getOutputStream():得到输出流对象,返回ServletOutputStream
12.resp.setContentType(“text/html;charset:utf-8”); 设置编码格式
13.req.getParameter(“uname”); 根据name值获取单个 14.req.getParameterValues(“hobbey”); 根据name值获取一组
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;
@WebServlet(name = "UserServlet",urlPatterns = "/userServlet")
public class Test extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置状态码
//resp.setStatus(400);
//设置状态码和描述信息
//resp.sendError(400,"小伙子页面找不到");
/*String str = "aabbsscccfffeeslkdsgfdgfdgafdgdsfgfhgjhgfgfdgfdfdgfdagjfdsjgfjgjfkdsjfkf";
System.out.println(str.getBytes().length);
//内存流
ByteArrayOutputStream by = new ByteArrayOutputStream();
//压缩流
GZIPOutputStream gzips = new GZIPOutputStream(by);
//读取数据
byte[] b = by.toByteArray();
System.out.println(b.length);*/
/*//设置服务器的压缩格式
resp.setHeader("Content-Encoding","gzip");
//设置文本格式
resp.setHeader("Content-length",b.length+"");
//规定其为设置字节数组
resp.setHeader("Accept","bytes");
//不加载浏览器缓存中的数据
resp.setHeader("Cache-Control","no-cache");*/
/* //设置响应的图片
resp.setHeader("Content-Type","jpg");
//把图片转换为输入流对象
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
//得到respone的流写入对象
ServletOutputStream so = resp.getOutputStream();
//把数据读取出来写入ServletOutputStream 对象
//创建带缓冲区的数据对象
byte[] i = new byte[1024];
int leng = -1;
while ((leng = is.read(i)) != -1){
so.write(i,0,leng);
}
//关闭流
so.close();*/
//下载图片
//输出流对象
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
String fileName = req.getParameter("fileName");
//下载时一定要加上这句话
resp.setHeader("Content-Disposition","attachment;fileName="+fileName);
//得到输出流对象
ServletOutputStream so = resp.getOutputStream();
byte[] b = new byte[1024];
int leng = -1;
while ((leng = is.read(b)) != -1){
so.write(b,0,leng);
}
so.close();
}
}
响应的内容格式
resp.setHeader(“Content-Type”,“jpg”):设置响应的图片
Content-Type text/html:文件 jpg、gif:图片
响应体
就是在网页上写内容,resp.getOutputStream():主要是用于来写字节,resp.getWriter():主要用于写字符
重定向
1.就是跳转到另一个界面:resp.sendRedirect(“index.jsp”); 参数是传递的是需要跳转的界面,重定向相当于两次请求
2.间隔多长时间再跳转到某个界面,resp.setHeader(“refresh”,“2;index.jsp”);第二个参数是 “时间(秒);重定向的界面”
文件的下载
resp.setHeader(“Content-Disposition”,“attachment;fileName=”+fileName); 一定要加上这句话
//下载图片
//输出流对象
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/01.png");
String fileName = req.getParameter("fileName");
//下载时一定要加上这句话
resp.setHeader("Content-Disposition","attachment;fileName="+fileName);
//得到输出流对象
ServletOutputStream so = resp.getOutputStream();
byte[] b = new byte[1024];
int leng = -1;
while ((leng = is.read(b)) != -1){
so.write(b,0,leng);
}
so.close();
HttpServletRequest
1.servlet创建的请求对象,继承 ServletRequest,不支持Http协议
2.HttpServletRequest:一般操作请求行、请求头和请求体
请求行的组成
请求的地址, 请求的端口号,请求的参数,请求方法的名称,请求的访问根目录(如果项目与根目录一样,访问就是空的)
service 方法的作用
1.req.getMethod(); 获取请求方法
2.req.getContextPath(); 获取请求的跟路径
3.req.getQueryString(); 获取请求拼接的参数
4.req.getRequestURI(); 获取请求的uri地址
5.req.getRequestURL(); 获取请求的url地址
获取网络资源:
1.req.getRemoteUser(); 获取到客户端的用户名
2.req.getRemoteAddr(); 获取到客户端的地址
3.req.getRemoteHost(); 获取其ip地址
获取服务器资源:
1.req.getLocalAddr(); 获取服务器的地址
2.req.getLocalName(); 服务器ip名称
3.req.getLocalPort(); 服务器端口号
4.req.getServletPath(); 获取服务器的访问路径
5.req.getServerName(); 服务器的ip地址
6.req.getServerPort(); 服务器的端口号
package com.offcn.test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "testServlet",urlPatterns ="/testServlet")
public class Test1 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的方法
String method = req.getMethod();
//获取到根的路径
String path = req.getContextPath();
//获取到拼接的参数
String query = req.getQueryString();
//获取到uri路径
String uri = req.getRequestURI();
//获取到url路径
StringBuffer url = req.getRequestURL();
//设置编码格式
resp.setContentType("text/html;charset:utf-8");
//等到响应对象输出对象
PrintWriter pw = resp.getWriter();
pw.write(method);
pw.write(path);
pw.write(query);
pw.write(uri);
pw.write(url.toString());
System.out.println(method);
System.out.println(path);
System.out.println(query);
System.out.println(uri);
System.out.println(url.toString());
pw.close();
/*//获取客户端的用户名、客户端地址、ip地址
String user = req.getRemoteUser();
String addr =req.getRemoteAddr();
String host =req.getRemoteHost();
System.out.println(user);
System.out.println(addr);
System.out.println(host);
//获取服务器的地址、ip名称、端口号
String add = req.getLocalAddr();
String name = req.getLocalName();
int port= req.getLocalPort();
System.out.println(add);
System.out.println(name);
System.out.println(port);
//获取访问路径
String path = req.getServletPath();
//服务器的ip地址
String names = req.getServerName();
//服务器端口号
int ports = req.getServerPort();
System.out.println(path);
System.out.println(names);
System.out.println(ports);*/
}
}
设置编码格式
1.resp.setContentType(“text/html;charset=utf-8”); 到tomcat里配置 URIEncoding=“UTF-8”
2. resp.setCharacterEncoding(“utf-8”);
3. req.setCharacterEncoding(“utf-8”);
//设置编码格式
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
//设置请求的编码格式
req.setCharacterEncoding("utf-8");