JAVAWEB系列 1-3
tomcat
XML
servlet
Httpservlet
cookie
Session
Httpservlet
HttpServlet是Servlet接口的一个实现类,并且它是一个抽象类,servlet.http包中定义了采用HTTP通信协议(一个无状态协议)的HttpServlet类。
涉及到的响应流程:
1.Web客户向Servlet容器发出Http请求
2.Servlet容器解析Web客户的Http请求
3.Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息
4.Servlet容器创建一个HttpResponse对象
5.Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse 对象作为service方法的参数传给HttpServlet对象
6.HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息
7.HttpServlet调用HttpResponse的有关方法,生成响应数据
8.Servlet容器把HttpServlet的响应结果传给Web客户
其中HttpServlet首先必须读取Http请求的内容,Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中。ServletContext
servlet上下文,为每一个工程创建的对象,全局唯一
作用:
解决了不同用户的数据共享问题
获取全局的配置参数
获取web工程中的资源读取工程资源(classloader)
生命周期:
创建:服务器启动的时候,会为托管的每一个web应用程序,创建一个ServletContext对象
销毁:从服务器移除托管,或者是关闭服务器。HttpservletRequests
用来封装http请求信息、获取请求行、请求头和正文
获取请求头:getHeader(String name)
获取提交的数据:*实战篇
getContextPath() 获得String类型的 web应用的名称(项目名)
getQueryString() 获得 get提交url 地址后的参数字符串;
getRequestURI() 获取URI地址String类型
getRequestURL() 获取URL地址StringBuffer类型
request.getRemoteAddr() 获得访问的客户端IP地址
referer 头的作用:获取该访问的来源,做防盗链解决乱码问题:
解决post提交方式的乱码:
request.setCharacterEncoding("UTF-8");
request.getParameter("username");
解决get提交的方式的乱码:
parameter = new String(requests.parameter.getbytes("iso8859-1"),"utf-8");HttpservletResponse
HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法
Response的基本使用
中文乱码问题:
字节流出现问题的原因:Tomcat的编码格式为ISO-8859-1,不支持中文服务器端和客户端两端的编码格式不一样
字符流出现乱码的原因:服务器端的输出默认是ISO-8859-1,如果不设置,那么浏览器会出现乱码
解决字符流:
HttpServletResponse.setCharacterEncoding("UTF-8");设置将字符以"UTF-8"编码输出到客户端浏览器,然后再使用
HttpServletResponse.getWriter();获取PrintWriter输出流,这两个步骤不能颠倒.
解决字节流:
response.setHeader("content-type", "text/html;charset=UTF-8") 请求转发和重定向
作用:在java后台servlet中,实现由一个servlet跳转到另一个servlet/jsp要使用的技术。
请求转发和重定向的使用:
请求转发:req.getRequestDispatcher(servlet、jsp的请求路径).forward(req,resp);
URL重定向:resp.sendRedirect("/day47/views/student.jsp");请求转发和重定向的区别
a.请求转发是一次请求,重定向是两次请求 (通过地址栏可以查看) b.请求转发地址栏不会发生改变, 重定向地址栏会发生改变 c.请求转发可以共享请求参数 ,重定向之后,就获取不了共享参数了 d.请求转发不能跨域(不能访问其他服务器链),重定向可以 e.请求转发能转到WEB-INF目录下的文件而重定向不能 (注:WEB-INF目录:不能被外部通过地址直接访问)

京公网安备 11010502036488号