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目录:不能被外部通过地址直接访问)