Servlet JSP 响应请求(Request、Response) 的多种方式 落日映苍穹つ 2022-02-23 11:56 208阅读 0赞 **目录直通车** Service()方法 一、 Request的具体实现 二、 获取请求URI、请求方式、域名后面的路径、参数 三、 Response的具体实现 四、 实例 -------------------- # Service()方法 # 在**Service()** 这个方法里面,有**servletRequest**和**servletResponse**两个参数。Servlet中的接口中的 service(ServletRequest servletRequest, ServletResponse servletResponse) 方法用于应答请求。实例代码在文末。 1、 原因是每次用户请求都会都会调用 service() 方法。 2、 servletRequest 封装了请求信息(通过J2EE的官方文档中能找到全部的方法)。 3、servletResponse 封装了响应信息,如果想给用户什么响应,具体可以使用该接口方法实现。 ## 一、 Request的具体实现 ## 通过 ServletRequest 的对象有多种获取请求参数的方式,这里就只拿出最常用的四种方法作为讲解。可以了解一下J2EE的文档里面有哪些方法。 **1、 String -> getParameter(String name)** String为返回值,用于获取单个值。 **2、** **String \[\] -> getParameterValues(String name)** 用于获取多个值 **3、 Enumeration -> getParameterNames()** 获取多个name对应的单个值 **4、 Map ->getParameterMap()** 获取全部的值,以键值对的方式存在Map中。 ## 二、 获取请求URI、请求方式、域名后面的路径、参数 ## ServletRequest的对象并不能获取这些数据,但是HttpServletRequest的对象就可以获取到,所以需要强转一下对象HttpServletRequest httpServletRequest =(HttpServletRequest) servletRequest;就可以使用以下的方法了。 1、getRequestURI() 如 /login 2、getMethod() 如 post 3、getQueryString() 如 xxx?userid=123&name=DJun 4、getServletPath() 如 /login ## 三、 Response的具体实现 ## Response大家都知道是用于回复用户的请求内容。介绍一下下面两个函数: 1、 getWriter() 通过PrintWriter的对象将回复的内容打印到页面中 PrintWriter printWriter = servletResponse.getWriter(); printWriter.println("Hello,World!"); 2、 setContentType() 设置内容类型(Header) 如, 返回一个word给用户下载: servletResponse.setContentType("application/msword"); 返回HTML或者是文本类型:servletResponse.setContentType("text/html;charset=UTF-8"); ## **四、 实例** ## import org.apache.catalina.tribes.util.Arrays; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import java.util.Map; public class LoginServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init ..."); } @Override public ServletConfig getServletConfig() { System.out.println("getServletConfig ..."); return null; } /** * service() 方法用于应答请求 * 因为每次请求都会调用 service() 方法 * @param servletRequest 封装了请求信息 * @param servletResponse 封装了响应信息,如果想给用户什么响应, * 具体可以使用该接口方法实现 */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { /* * 获取请求参数的四种方式 * 1、 String -> getParameter(String name) * 用于获取单个值 * 2、 String [] -> getParameterValues(String name) * 用于获取多个值 * 3、 Enumeration -> getParameterNames() * 获取多个name对应的单个值 * 4、 Map ->getParameterMap() * 获取全部的键值对 */ System.out.println("--------获取单个值----------"); String userName = servletRequest.getParameter("username"); String password = servletRequest.getParameter("password"); System.out.println("userName:"+ userName +"\n"+"pwd:"+password); System.out.println("--------获取多个值----------"); String [] interesting = servletRequest.getParameterValues("interesting"); for (String str : interesting){ System.out.println(str); } System.out.println("--------getParameterNames----------"); Enumeration<String> names = servletRequest.getParameterNames(); while (names.hasMoreElements()){ String name = names.nextElement(); String value = servletRequest.getParameter(name); System.out.println(name + " : "+ value); } System.out.println("--------getParameterMap----------"); Map<String,String []> map = servletRequest.getParameterMap(); // Set set = map.entrySet(); // for (Object o : set){ // Map.Entry entry = (AbstractReplicatedMap.MapEntry) o; // System.out.println(entry.getKey()); // System.out.println(entry.getValue()); // } for (Map.Entry<String,String []> entry : map.entrySet()){ System.out.println(entry.getKey()+" : "+ Arrays.toString(entry.getValue())); } HttpServletRequest httpServletRequest =(HttpServletRequest) servletRequest; String requestURI = httpServletRequest.getRequestURI(); System.out.println("URI: " + requestURI); String requestMethod = httpServletRequest.getMethod(); System.out.println("Method: " + requestMethod); String queryString = httpServletRequest.getQueryString(); System.out.println("queryString: " + queryString); String servletPath = httpServletRequest.getServletPath(); System.out.println("servletPath: " + servletPath); /* * Servlet Response * 1. getWriter() 通过PrintWriter把内容打印到页面中 * 2. setContentType() 设置内容类型(Header) * */ System.out.println("---------- TestResponse ------------"); // servletResponse.setContentType("application/msword"); servletResponse.setContentType("text/html;charset=UTF-8"); PrintWriter printWriter = servletResponse.getWriter(); printWriter.println("HELLO"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } public LoginServlet() { } }
相关 Servlet基础:请求和响应的常见问题 在学习Servlet时,关于请求和响应的问题可能会遇到以下几个方面: 1. 请求的理解: - 请求URI:浏览器发送到服务器的URL。 - HTTP方法(GET, 梦里梦外;/ 2024年09月10日 23:30/ 0 赞/ 131 阅读
相关 JavaWeb【总结】——(请求和响应)浏览器发送请求的方式 & 服务器响应的方式 本文目录 引出 JavaWeb相关知识 1.网页状态码+web相关背景知识+如何在idea中建tomcat web项目 2.Web的 ╰+哭是因爲堅強的太久メ/ 2024年03月16日 18:47/ 0 赞/ 56 阅读
相关 jsp和Servlet中的响应(response)编码 ![Center][] <span style="font-size:18px;"> 常见字符编码:iso-8859-1(不支持中文)、gb2312、gbk、gb1 ╰+哭是因爲堅強的太久メ/ 2022年08月07日 06:55/ 0 赞/ 134 阅读
相关 Ajax+Servlet:Servlet无法请求响应或重定位。 今天在做项目的时候,发现了一个问题,在使用ajax与servlet通信的时候,servlet判断成功无法跳转到指定的页面。 通过查资料,我发现servlet 不管用请求转发 旧城等待,/ 2022年05月26日 07:26/ 0 赞/ 154 阅读
相关 servlet请求方式、编码问题 6.客户端向服务器发请求并且传参(get/post) 客户端向服务器发送请求可以是get方式也可以是post方式.所以传参也分为get方式下传参 和 清疚/ 2022年05月08日 22:36/ 0 赞/ 132 阅读
相关 Servlet JSP 响应请求(Request、Response) 的多种方式 目录直通车 Service()方法 一、 Request的具体实现 二、 获取请求URI、请求方式、域名后面的路径、参数 三、 Response的具体实现 四、 实例 落日映苍穹つ/ 2022年02月23日 11:56/ 0 赞/ 209 阅读
相关 Servlet请求和响应 1.Servlet请求操作 通过前面的学习我们能够创建并运行一个简单的Servlet 程序,完成浏览器和服务器的简单交互,但是我们编写的Servlet 代码是没有对浏览 迷南。/ 2021年11月16日 12:06/ 0 赞/ 350 阅读
相关 【WEB】Servlet处理HTTP请求和响应 既然一次WEB请求分请求和响应两总部分那么Servlet必然也可以处理Web请求的数据,向客户端发送Web响应 1.1.Servet处理Web请求 怎么是把web请求中 我就是我/ 2021年11月02日 11:58/ 0 赞/ 391 阅读
相关 jsp页面如何请求servlet ![20190812181655924.png][] <a href="/UserServlte?method=findById?id=1"></a> [201908 怼烎@/ 2021年10月18日 15:44/ 0 赞/ 334 阅读
还没有评论,来说两句吧...