JavaWeb中的HttpServletRequest与HttpServletResponse

HttpServletRequest:客户端请求到达Tomcat服务器后,Tomcat对请求进行了封装,存放到HttpServletRequest的实现类RequsetFade的对象中.
(一请求)
请求的生命周期:
HttpServletRequest实例对象是客户端请求发送到服务器后,服务器进行接卸,同时创建HttpServletRequest的实现类RequsetFade的对象,将请求的数据放到其中,请求对象是服务器创建的.
当服务器向客户端发送响应结束后,HttpServletRequest实例对象被销毁.

请求参数的获取:
参数是以键值对的形式存放的,key为字符串类型,value为字符串数组类型
//获取指定名称的参数值
request.getParameter(getServletName())
//获取所有参数名称
request.getParameterNames()
//获取指定名称的所有值
request.getParameterValues(getServletName())

请求的域属性:
在request中存在域属性空间,用于存放有名称的数据,该数据只在当前request请求中可以访问.

	//域属性空间存放数据
	request.setAttribute("address", "中国");
	
	//请求转发到other 转发后请求生命周期并未结束
	RequestDispatcher rd= request.getRequestDispatcher("/otherservlet");
	rd.forward(request, response);
	//在otherservlet中获取域属性中的数据
	String aa =(String)request.getAttribute("address");
   //删除指定域属性
   request.removeAttribute("address");

请求的其他信息:

//获取请求的url
request.getRequestURL();
//获取请求的uri,url去除协议/ip/端口部分
request.getRequestURI();
//获取当前web的根路径
request.getContextPath();
//获取客户端地址
request.getRemoteAddr();
//获取url-pattern中的精确部分
request.getServletPath();
//获取url-pattern中的非精确部分
request.getPathInfo();

请求中文乱码:
乱码原因:
Http协议传输底层使用的是TCP传输协议,是基于字节流的通信协议.
客户端通过浏览器提交一个包含UTF-8编码格式的中文请求时,浏览器会通过字节流传给服务器,Tomcat接收到之后并不知道客户端的编码格式,会按照ISO8859-1编码格式进行编码所以会出现乱码.
其中Tomcat9以上服务器对GET请求的中文乱码已经解决.
乱码处理:
//后台代码设置post请求的中文编码格式
request.setCharacterEncoding(“UTF-8”);
//get请求中文乱码处理,编辑Tomcat服务器的server.xml配置文件,
节点 添加URIEncoding=’“UTF-8”,缺点需重启服务器
//请求中文乱码处理二,首先获取参数值,按照ISO8859-1编码解析,然后转换为UTF-8编码格式

(二响应)
Web服务器接收到http请求或,需要从客户单获取相关请求信息,需要从httpservletRequest中获取;若需要向客户端发送数据,则需要通过httpservletRestponse对象完成.

servletresponse接口有一个方法getWriter(),用于获取一个输出流对象,printWriter,该输出流对象专门用于向客户端浏览器输出字符数据的,成为标准输出流.当请求-响应结束后,printwriter对象会被服务销毁.

响应中文乱码:

//设置响应的MIME类型
response.setContentType("text/html;charset=UTF-8");
response.getWriter().append("Served at: ").append(request.getContextPath());

注意需要在printwriter对象创建前设置MIME类型

请求转发与重定向:
在这里插入图片描述
请求转发:一次请求,服务器内部跳转-响应;
请求重定向:一次请求-响应-重定向-请求-响应…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Servlet是Java编写的服务器端程序,用于处理客户端(通常是浏览器)发送的HTTP请求并生成响应。Servlet运行在支持Java Servlet规范的Web服务器,如Apache Tomcat。 Servlet通过继承javax.servlet.HttpServlet类来创建。在Servlet,可以重写一些方法来处理请求和生成响应,其最常用的方法包括: - doGet(HttpServletRequest request, HttpServletResponse response):处理HTTP GET请求。 - doPost(HttpServletRequest request, HttpServletResponse response):处理HTTP POST请求。 - doPut(HttpServletRequest request, HttpServletResponse response):处理HTTP PUT请求。 - doDelete(HttpServletRequest request, HttpServletResponse response):处理HTTP DELETE请求。 在这些方法,可以通过HttpServletRequest对象获取请求的参数、头信息等,并通过HttpServletResponse对象生成响应,如设置响应的内容、状态码、头信息等。 为了将Servlet与特定的URL映射起来,需要在web.xml文件配置Servlet的映射关系。例如: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> ``` 上述配置将名为MyServlet的Servlet映射到"/myservlet"的URL上。当客户端请求该URL时,Web服务器将调用MyServlet的相应方法来处理请求。 除了处理请求和生成响应外,Servlet还可以在初始化和销毁时执行一些操作。可以通过重写init()和destroy()方法来实现这些操作。 希望这个简单的介绍对你有帮助!如果你有更多关于Servlet的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

难自拔于世界之大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值