您的位置:首页 > 其它

J2EE:servlet response常用方法总结

2017-04-08 15:35 330 查看
response是HttpServletResponse的实例,用于提供给浏览器的响应信息

response 是响应,服务端(S)给浏览器(B)的响应

响应内容

通过response.getWriter(); 获取一个PrintWriter 对象

可以使用println(),append(),write(),format()等等方法设置返回给浏览器的html内容

import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;

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

public class HelloServlet extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response){

try {
response.getWriter().println("<h1>Hello Servlet!</h1>");
response.getWriter().println(new Date().toLocaleString());
} catch (IOException e) {
e.printStackTrace();
}
}
}


设置响应格式

如果响应还未被提交,设置被发送到客户端的响应的内容类型。

response.setContentType("text/html");


“text/html” 是存在的,表示浏览器可以识别这种格式,如果换一个其他的格式, 比如 “text/lol” ,浏览器不能识别,那么打开此servlet就会弹出一个下载的对话框。

PrintWriter pw = response.getWriter();
pw.println("<h1>Hello Servlet</h1>");

response.setContentType("text/lol");


设置响应编码

设置响应编码有两种方式

第一种方式

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

response.getWriter().println("<h1>Hello Servlet!</h1>");
response.getWriter().println(new Date().toLocaleString());


不仅发送到浏览器的内容使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。所以总能正常显示中文

第二种方式

response.setCharacterEncoding("UTF-8");


发送给浏览器的内容使用UTF-8编码,如果浏览器显示编码方式不是UTF-8会乱码,需要手动设置。

301或302客户端跳转

302 表示临时跳转

301 表示永久性跳转

302永久跳转

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 请求:浏览器--> 服务器
String name = request.getParameter("name");
String password = request.getParameter("password");

if("admin".equals(name) && "123".equals(password))
// 服务端跳转
request.getRequestDispatcher("success.html").forward(request, response);
else
// 客户端302永久性跳转
response.sendRedirect("fail.html");

}


301临时跳转

protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String name = request.getParameter("name");
String password = request.getParameter("password");

if ("admin".equals(name) && "123".equals(password)) {
request.getRequestDispatcher("success.html").forward(request, response);
} else {
// 301 临时跳转
response.setStatus(301);
response.setHeader("Location", "fail.html");
}

}


301和302的区别主要在搜索引擎对页面排名的时候有影响,这是属于SEO范畴的概念

设置浏览器不适用缓存

使用缓存可以加快页面的加载,降低服务端的负担。但是也可能看到过时的信息。

“`

public void doGet(HttpServletRequest request, HttpServletResponse response) {

try {
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Controll", "no-cache");
response.setHeader("pragma", "no-cache");

response.getWriter().println("<h1>Hello Servlet!</h1>");
response.getWriter().println(new Date().toLocaleString());
} catch (IOException e) {
e.printStackTrace();
}
}


http://www.w3cschool.cn/servlet/servlet-server-response.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: