接着上一篇我们在搞完servlet的终极模式之后,接着就需要对发送的请求做出响应了
在这里,所谓的响应,都是返回页面的语言在浏览器上显示也就是HTML语言,所以返回的结果只有HTML语言才能在浏览器上显示
1.response
response在使用之前有需要设置response的编码格式,否则输入中文就会乱码设置时需要注意,一定要在response.getWriter()之前,因为有些servlet在生成的时候回默认在doget生成一个,否则就没有用response.getWriter()
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
1.response.getWriter() 写的字符串就是HTML就是网页源代码,也就是说换行就是writer.write("<br>");
PrintWriter writer= response.getWriter();
writer.write("
aaa 响应成功
aaa");
2.如果要返回一个页面则需要重定向
response.sendRedirect("res_and_rsp.html");
2.request
1.网页中填写的表单,会以request.getParameter()的方式取出
String username = request.getParameter("username");
String password = request.getParameter("password");
2.request获得当前页面的路径
String path = request.getContextPath();
3.转发请求 先获取一个转发器 然后输入路径在forward即可
RequestDispatcher Dispatcher= request.getRequestDispatcher("res_and_rsp.html");
Dispatcher.forward(request, response);
转发的重定向的区别
1.1转发对浏览器来说是一次请求 处理发送的过程在服务器内部发生,也就是说,浏览器告诉服务器要给我一个东西,服务器就给了
1.2重定向是两次请求 首先请求服务器,服务器告诉你,你需要请求的页面地址,然后你再次请求该页面地址得到结果
2.1转发地址栏地址无变化,重定向地址栏有变化
3.1转发可以访问WEB-INF目录下的资源,重定向不可以
//转发 RequestDispatcher Dispatcher= request.getRequestDispatcher("WEB-INF/one.html"); Dispatcher.forward(request, response); //重定向 response.sendRedirect("WEB-INF/one.html");
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>你有权利</h1> </body> </html>
4.1转发可以共享request域中的数据,重定向不可以共享request域中的数据