概述
HttpServletRequest的作用:
每次只要有请求进入Tomcate服务器,Tomcate服务器就会创建一个Request对象,并将请求的Http协议的信息封装到Request对象中,,然后在将对象传递给doget()和doPost()方法的参数中,从而我们可以通过HttpServletRequest对象获取所有的请求信息。
HttpServletRequest类常用的方法:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(req.getRequestURI()); //获取请求的资源名 /项目名/请求的servlet资源 /01web_war_exploded/hello1
System.out.println(req.getRequestURL()); //获取全部的请求路径但是不会包含请求参数 http://localhost:8080/01web_war_exploded/hello1 ,
// 使用真实的IP不使用locahost访问也会产生真实的客户端ip(就是通过网络来访问)
System.out.println(req.getRemoteHost()); //用来获取客户端的IP地址
System.out.println(req.getHeader("Host")); //用来获取指定请求头的数据
System.out.println(req.getParameter("username")); //用来获取指定的请求参数
System.out.println(req.getParameterValues("username")); //获取指定的请求参数【需要是请求参数在多个值的情况下使用】
System.out.println(req.getMethod());//获取请求的方式
//System.out.println(req.getRequestDispatcher());//获取请求转发的对象
Map parameterMap = req.getParameterMap();//一次性获取全部的请求参数 并封装到map中
req.setAttribute("username",1230); //设置Request域对象中的值
Object username = req.getAttribute("username");//获取Request域对象中的值
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("访问post成功");
请求转发:
请求转发是指,客户端收到请求后,从一个资源跳转到另一个资源的的操作叫做转发。请求转发的过程中浏览器中的地址栏的地址是不会改变的。
注:请求参数不是必须的。
代码:
req.getRequestDispatcher("请求路径: 基于当前web工程").forward(req,resp);
请求转发的特点:
- 浏览器地址栏的地址没有变化。
- 不管跳转几个servlet或者是资源 他们都是一次请求。
- 请求过程中所经过所有的servlet他们共享request域中的数据。
- 可以转发到WEB-INF目录下的资源。
- 但是不可以访问工程之外的资源。
request域:
Request对象是一个域对象,可以在在其作用域之内,共享数据,
Request域对象的作用范围是一次请求中。所以在一次请求中所有的servlet或者资源可以共享request域中的资源。
示例代码:
servlet1:
public class Servlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是servlet1请求转发开始的地方");
req.setAttribute("username","小明"); //向request域中存入对象
req.getRequestDispatcher("/servlet").forward(req,resp); //请求转发
}
}
servlet2:
public class Servlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是servlet2,请求被转发的地方");
Object username = req.getAttribute("username");//按照kay的从域中取出数据。
}
}
对于servlet接收post请求出现中文乱码的问题:
产生原因是:客户端和服务器之间使用的编码集不一样。
解决:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");//设置请求集是utf-s
String username = req.getParameter("username");
System.out.println(username);
}
最后
以上就是缥缈烧鹅为你收集整理的JavaWeb的HttpServletRequest类(Request对象)的全部内容,希望文章能够帮你解决JavaWeb的HttpServletRequest类(Request对象)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复