浅谈Tomcat9之Servlet-request获取请求参数及常用方法

简介: //获取Map集合中所有的keyEnumeration<String> getParameterNames();

//获取Map集合中所有的key

Enumeration<String>   getParameterNames();

//获取Map

Map<String, String[]>   getParameterMap();

//根据key获取Map集合中的vale  (常用**)

String[]   getParameterValues(String s);

//获取value一维数组的第一个元素   (常用**)

String    getParameter(String name);

浏览器向服务器提交的是String类型

测试

7.png



//getParameterNames()获取所有key值

Enumeration<String> keys = request.getParameterNames();

while (keys.hasMoreElements()){

   String key = keys.nextElement();

   System.out.print("key: "+key +" ");

   //getParameterValues(key) 、据key获取Map集合中的vale

   String[] Values = request.getParameterValues(key);

   if (Values.length>1){

       for (String value : Values) {

           System.out.print("value:"+value+" ");

       }

   }else {

       System.out.print(Values[0]);

   }

   System.out.println();

}


56.png


通过标签中的name获取value一维数组


getParameterNames()获取所有key值


如果html页面的数据有更改,浏览器清除过缓存在执行。

5.png


//通过标签中的name获取value一维数组

String[] usernames = request.getParameterValues("username");

String[] pwds = request.getParameterValues("pwd");

String[] hobbies = request.getParameterValues("hobby");

for (String username : usernames) {

   System.out.print(username);

}

System.out.println();

for (String pwd : pwds) {

   System.out.print(pwd);

}

System.out.println();

for (String hobby : hobbies) {

   if (hobby.isEmpty()){

       System.out.println("null");

   }

   System.out.print(hobby);

}

System.out.println();

//获取数组的第一个参数

String username = request.getParameter("username");

String pwd = request.getParameter("pwd");

String hobby = request.getParameter("hobby");

System.out.println("getParameter :"+username+" "+pwd+" "+hobby);


getParameter获取数组的第一个参数


//获取数组的第一个参数

String username = request.getParameter("username");

String pwd = request.getParameter("pwd");

String hobby = request.getParameter("hobby");

请求域对象

Request又称“请求域”

应用域对象ServletContext(Servlet上下文对象)、

当用户的共享数据很少修改操作并且数据量少的时候,使用ServletContext能够提升程序的执行效率(应用域绑定数据,看作将数据放到Cache当中,用户访问时直接从Cache中提取,减少IO等操作)。

应用域对象ServletContext的操作方法(类似Map集合的操作)

//向域绑定数据

setAttribute(String name , Object obj)

//从域获取数据,根据name(key)获取数据

Object getAttribute(String name)

//移除数据,根据name(key)

removeAttribute(String name)

请求域对象

请求域比应用域的范围小, 占用资源小,生命周期短,请求域对象只在一次请求内有效。

请求域对象ServletContext的操作方法(类似Map集合的操作)

//向域绑定数据

setAttribute(String name , Object obj)

//从域获取数据,根据name(key)获取数据

Object getAttribute(String name)

//移除数据,根据name(key)

removeAttribute(String name)

案例


//获取系统当前时间

Date nowTime =new Date();

//向request域 中绑定数据

request.setAttribute("NowTime",nowTime);

//从request域 获取数据

Object obj = request.getAttribute("NowTime");

response.setContentType("text/html;charset=utf-8");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

String timeStr = sdf.format((Date)obj);

out.print("当前时间: "+ timeStr);

Servlet转发机制

转发servlet类

4.png


public class ServletA extends HttpServlet {

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //使用Servlet转发机制。执行ServletA后,跳转至ServletB,调用请求转发器,将request,response参数传递给另一个HttpServlet子类

       request.getRequestDispatcher("/servletB").forward(request,response);

   }

}

public class ServletB extends HttpServlet {

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //获取系统当前时间

       Date nowTime =new Date();

       //向request域 中绑定数据

       request.setAttribute("NowTime",nowTime);

       //从request域 获取数据

       Object obj = request.getAttribute("NowTime");

       response.setContentType("text/html;charset=utf-8");

       response.setCharacterEncoding("utf-8");

       PrintWriter out = response.getWriter();

       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

       String timeStr = sdf.format((Date)obj);

       out.print("当前时间: "+ timeStr);

   }

}

3.png


转发html页面

//既可以转发Servlet类也可以转发html(属于Web容器当中合法的资源都可以转发)

request.getRequestDispatcher("/share.html").forward(request,response);

2.png


常用方法

//获取客户端的IP地址

String remoteAddr = request.getRemoteAddr();

//获取远程的用户

String remoteUser = request.getRemoteUser();

//获取远程的主机IP

String remoteHost = request.getRemoteHost();

//获取远程的的端口

int remotePort = request.getRemotePort();

//获取主机服务名

String serverName = request.getServerName();

//获取服务路径(项目名称)

String servletPath = request.getServletPath();

//获取服务端口

int serverPort = request.getServerPort();

//获取Servlet上下文  或者this.getServletContext();

ServletContext servletContext = request.getServletContext();

//指定字符集(解决不同字符集乱码问题)

response.setCharacterEncoding("utf-8");


1.png


1.png

目录
相关文章
|
1月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
33 4
|
2月前
|
Java 应用服务中间件 Maven
JavaWeb基础5——HTTP,Tomcat&Servlet
JavaWeb技术栈、HTTP、get和post区别、响应状态码、请求响应格数据式、IDEA使用Tomcat、报错解决、Servlet的体系结构、IDEA使用模板创建Servlet
JavaWeb基础5——HTTP,Tomcat&Servlet
|
3月前
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
35 0
|
3月前
|
安全 Java 应用服务中间件
在CentOS 7上安装Apache Tomcat 8的方法
在CentOS 7上安装Apache Tomcat 8的方法
131 0
|
3月前
|
Java 应用服务中间件 Apache
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
在 Debian 服务器上安装和配置 Apache Tomcat 的方法
53 0
|
5月前
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
5月前
|
前端开发 应用服务中间件
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
5月前
|
XML 数据格式