做海报的网站什么编辑,基于php旅游网站的毕业设计,明星粉丝网站怎么做,有没有可以免费看的视频一、概念 request对象和response对象是通过Servlet容器#xff08;如Tomcat#xff09;自动创建并传递给Servlet的。
Servlet容器负责接收客户端的请求#xff0c;并将请求信息封装到request对象中#xff0c;然后将request对象传
递给相应的Servlet进行处理。类似地如Tomcat自动创建并传递给Servlet的。
Servlet容器负责接收客户端的请求并将请求信息封装到request对象中然后将request对象传
递给相应的Servlet进行处理。类似地Servlet容器会创建一个response对象并将其传递给
Servlet用于生成响应并发送给客户端。 总的来说request对象是来获取请求消息response对象是来设置响应消息
二、Request 在Servlet的service()方法被调用时Servlet容器会创建一个包含请求信息的HttpServletRequest对象并将其作为参数传递给Servlet的service()方法。类似地Servlet容器还会创建一个HttpServletResponse对象并将其作为参数传递给Servlet的service()方法。
1、Request功能
1获取请求行数据 请求行的数据有请求方式 请求url 请求协议/协议版本号 ①获取请求方式getMethod() ②获取虚拟目录getContextPath() ③获取servlet路径getServletPath() ④获取get方式请求参数getQueryString() ⑤获取请求URI统一资源定位符getRequestURI() 统一资源标识符getRequestURL() ⑥获取协议及版本 getProtocol() ⑦获取客户机的IP地址getRemoteAddr() 代码示例
WebServlet(/requestDemo1)
public class RequestDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1获取请求方式String methodrequest.getMethod();System.out.println(method);//2获取虚拟目录String contextPath request.getContextPath();System.out.println(contextPath);//3获取servlet路径String servletPath request.getServletPath();System.out.println(servletPath);//4获取请求参数String queryString request.getQueryString();System.out.println(queryString);//5获取请求URIString requestURI request.getRequestURI();System.out.println(requestURI);StringBuffer requestURL request.getRequestURL();System.out.println(requestURL);//6获取请求协议及版本号String protocol request.getProtocol();System.out.println(protocol);//7获取客户机的ip地址String remoteAddr request.getRemoteAddr();System.out.println(remoteAddr);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}2获取请求头数据 方法getHeader(String name):通过请求头的名称获取请求头的值 getHeaderNames():获取所有的请求头名称
WebServlet(/requestDemo2)
public class RequestDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//演示获取请求头数据//获取所以请求头数据EnumerationString headerNames request.getHeaderNames();//遍历while(headerNames.hasMoreElements()){String s headerNames.nextElement();//根据名称获取请求头的值String header request.getHeader(s);System.out.println(s......header);}//演示获取请求头数据:user-AgentString header request.getHeader(user-agent);//判断agent的浏览器版本System.out.println(header);}
3获取请求体数据 只有post请求有请求体
步骤①获取流对象 BufferedReader getReader()获取字符输入流只能操作字符数据 ServletInputStream getInputStream()获取字节输入流可以操作所有类型数据 ② 再从流对象中拿数据
Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取请求消息体--请求参数//1、获取字符流BufferedReader reader request.getReader();//2、读取数据String linenull;while((linereader.readLine())!null){System.out.println(line);}System.out.println(-------------------------------------);} 2、其他功能
1获取请求参数不区分post和get方法 ①根据参数名称获取参数值getParameter(String name) ②根据参数名称获取参数值数组getParameterValues(String name) ③获取所有请求的参数名称getParameterNames() ④获取所有参数的map集合getParameterMap()
WebServlet(/requestDemo4)
public class RequestDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//解决中文乱码问题request.setCharacterEncoding(utf-8);//根据请求参数的名称获取请求参数值String username request.getParameter(username);System.out.println(username);System.out.println(post);System.out.println();//根据参数名称获取请求参数数组String[] parameterValues request.getParameterValues(hobby);for (String hobby:parameterValues) {System.out.println(hobby);}System.out.println();//根据所以请求参数名称EnumerationString parameterNames request.getParameterNames();while(parameterNames.hasMoreElements()){String s parameterNames.nextElement();System.out.print(s);String parameter request.getParameter(s);System.out.println(parameter);}System.out.println();//获取所以参数的map集合MapString, String[] parameterMap request.getParameterMap();SetString strings parameterMap.keySet();for(String name:strings){String[] strings1 parameterMap.get(name);System.out.print(name);for(String value:strings1){System.out.println(value);}}}
}2请求转发 在服务器内部的资源跳转方式 步骤 通过request对象获取请求转发器对象getRequestDispatcher(String path)。 使用RequestDispatcher对象来进行转发forward(ServletRequest request, ServletResponse response) 。 特点 浏览器地址栏不发生改变 只能转发到当前服务器内部资源中 转发是一次请求
3共享数据 域对象一个有作用范围的对象可以在范围内共享数据 request域代表一次请求的范围一般用于请求转发的多个资源中共享数据 方法 ①setAttribute(String name,Object obj):存储数据 ②getAttitude(String name):通过键获取值 ③ void removeAttribute(String name):通过键移除键值对 注意这个放于forward方法的上面不然响应太快会导致无法获取信息 代码示例
WebServlet(/requestDemo5)
public class RequestDemo5 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo5被访问了);request.setAttribute(ttt,hhhh);//转发到demo6request.getRequestDispatcher(/requestDemo6).forward(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}WebServlet(/requestDemo6)
public class RequestDemo6 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Object ttt request.getAttribute(ttt);System.out.println(ttt);System.out.println(demo6被访问了);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
4获取ServletContext对象 getServletContext()
三、Response response设置响应消息
1、设置响应行方法
1设置响应行状态码方法setStatus
2设置响应头setHeaderString nameString value
3设置响应体 使用步骤 ①获取输出流 字符输出流PrintWriter getWriter() 字节输出流ServletOutputStream getOutputStream() ② 使用输出流将数据输出到客户端浏览器
2、重定向 一种资源跳转的方式 1方法sendRedirect( 2 重定向的特点:redirect ① 地址栏发生变化 ② 重定向可以访问其他站点(服务器)的资源 ③ 重定向是两次请求。不能使用request对象来共享数据
WebServlet( /responseDemo1)
public class responseDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo1);//设置状态码为302response.setStatus(302);/* //设置响应头locationresponse.setHeader(location,/servlet/responseDemo2);*///获取当前应用程序的上下文路径String contextPath request.getContextPath();//简单的重定向方法response.sendRedirect(contextPath/responseDemo2);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}WebServlet(/responseDemo2)
public class responseDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo2);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}3服务器输出字符数据到浏览器 步骤 获取字符输出流 输出数据
WebServlet(/responseDemo3)
public class responseDemo3 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*//获取流对象之前设置流的默认编码ISO-8859-1设置为浏览器默认编码response.setCharacterEncoding(utf-8);//告诉浏览器服务器发送的消息体数据的编码建议浏览器使用改编码解码response.setHeader(content-type,text/html;charsetutf-8);*/response.setContentType(text/html;charsetutf-8);//解决乱码问题//获取字符输出流PrintWriter writer response.getWriter();//输出数据writer.write(牛牛牛);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}
4服务器输出字节数据到浏览器 步骤 获取字节输出流 输出数据
WebServlet(/responseDemo4)
public class responseDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取字节输出流ServletOutputStream outputStream response.getOutputStream();//输出数据outputStream.write(你好.getBytes());}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}
三、ServletContext对象
1、概念 ServletContext 实例代表了整个 Web 应用程序的上下文环境可以在整个应用程序中访问和共享可以和服务器来通信。
2、获取 方式一 通过request对象获取request.getServletContext(); 方式二 通过HttpServlet获取this.getServletContext();
3、功能
1获取MIME类 MIME类型:在互联网通信过程中定义的一种文件数据类型 格式 大类型/小类型 text/html image/jpeg 获取方法getMimeType(String file) 代码示例
WebServlet(/ContextDemo1)
public class ContextDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取Context对象的方式// ServletContext servletContext request.getServletContext();ServletContext servletContext1 this.getServletContext();//定义文件名称String filenamea.jpg;//获取MIME类型String mimeType servletContext1.getMimeType(filename);System.out.println(mimeType );}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}2域对象共享数据 ① setAttribute(String name,Object value) ② getAttribute(String name) ③removeAttribute(String name) ServletContext对象范围所有用户所有请求的数据 WebServlet(name ContextDemo2, value /ContextDemo2)
public class ContextDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletContext servletContext1 this.getServletContext();servletContext1.setAttribute(n,hello);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}WebServlet(name ContextDemo2, value /ContextDemo2)
public class ContextDemo3 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletContext servletContext1 this.getServletContext();Object n servletContext1.getAttribute(n);System.out.println(n);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}
3 获取文件的真实(服务器)路径 方法String getRealPath(String path)