ServletRequest概述
ServletRequest:封装了请求的信息,可以从中获取任何的请求信息。
ServletResponse:封装了响应信息,如果想要给用户数目响应信息。可以使用该接口的具体实现方法。
上述的俩个接口的实现类都是服务器给予实现的。并在服务器调用service()方法的时候传入。
如何使用ServletRequest获取请求数据信息
1.我们在运行Servlet的时候发现,我们的每一次请求都会去调用Service()方法,那么也就是说Service()方法是Servlet中作为请求接收和应答的方法。
2.如何把需要提交的数据准确的发送给我们需要的Servle中。
(1).配置该Servlet的访问URL(注意:这里面配置的就是这一个servlet的访问路径)。
在web.xml中配置
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>com.cn.test.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
使用注解进行访问配置
@WebServlet(name="ServletTest",urlPatterns="/ServletTest")
public class ServletTest extends HttpServlet{
//其他代码
}
(2).数据的提交指向该Servlet的访问URL(链接地址或者是提交的表单)
<form action="ServletTest" method="post" name="form" id="form">
username:<Input type="text" name="username">
password:<input type="password" name="password">
<input type="submit" value="提交">
</form>
3.Servlet中如何获取传递过来的数据信息
(1).使用的相关方法(常用):
String getParameters(String name);根据给定的请求参数名,返回来自客户请求中的匹配的请求参数值
Map getParameterMap();返回该参数的键值对,key:参数名,value:参数值
Enumeration getParameternames();返回该参数名对应的Enumeration 对象
String[] getParameterValues(String name);根据给定的请求参数名,返回来自客户端请求中的匹配的请求参数值数组
String getRequestURL():获取请求的url地址
String getQueryString():获取请求查询的字符串
String getMethod():获取请求的方式
String getLocalAddr():返回服务器端的IP地址。
String getRemoteAddr():返回客户端的IP地址。
String getRemoteHost():返回客户端的主机名。
(2).代码实现
发送请求
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="ServletTest" method="post">
username:<Input type="text" name="username">
password:<input type="password" name="password">
<br>
like fruit:
<input type="checkbox" name="likeFruit" value="apple">apple
<input type="checkbox" name="likeFruit" value="orange">orange
<input type="checkbox" name="likeFruit" value="eggplant">eggplant
<input type="checkbox" name="likeFruit" value="pomegranate">pomegranate
<input type="checkbox" name="likeFruit" value="banana">banana
<input type="submit" value="提交">
</form>
</body>
</html>
接受请求的Servlet以及能够获取到的常用信息
package com.cn.test;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import com.sun.corba.se.impl.naming.pcosnaming.NameServer;
public class ServletTest implements Servlet {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init method...");
}
@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service method...");
//常用方法测试
//根据请求的名称获取请求的值(获取单一的值)
String getUsername = request.getParameter("username");
String getPassword = request.getParameter("password");
//获取一个数组,如多选框传递过来的数据
String[] getLikeFruit = request.getParameterValues("likeFruit");
for(String str:getLikeFruit){
System.out.println("获取的数据是:" + str);
}
//获取一个Enumeration对象
Enumeration<String> getNames = request.getParameterNames();
while(getNames.hasMoreElements()){
String name = getNames.nextElement();
String value = request.getParameter(name);
System.out.println(name + "----" + value);
}
//获取一个Map对象
Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String,String[]> entry:map.entrySet()){
System.out.println(entry.getKey() + "-----" + Arrays.asList(entry.getValue()));
}
//进行子接口的转化
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
//获取求取的URL
String getUrl = httpServletRequest.getRequestURI();
System.out.println("获取的url地址是:" + getUrl);
//获取请求的方式
String getMethod = httpServletRequest.getMethod();
System.out.println("获取的请求方式是: " + getMethod);
//获取请求查询的字符串
String getQueryString = httpServletRequest.getQueryString();
System.out.println("获取的查询字符串是:" + getQueryString);
//获取Servlet名称
String getServletName = httpServletRequest.getServletPath();
System.out.println("获取到的Servlet是:" + getServletName);
//获取IP
String getIP = httpServletRequest.getLocalAddr();
System.out.println("获取的服务器端的IP是:" + getIP);
String getremoteAddr = httpServletRequest.getRemoteAddr();
System.out.println("获取的客户端的IP是:" + getremoteAddr);
String getHost = httpServletRequest.getRemoteHost();
System.out.println("获取的客户端的主机名是:" + getHost);
}
}
获取到的数据结果