javaWEB总结(6):ServletRequest

1.首先看ServletRequest的API

javax.servlet
Interface ServletRequest

All Known Subinterfaces:
HttpServletRequest
All Known Implementing Classes:
HttpServletRequestWrapper, ServletRequestWrapper
Method Summary
 ObjectgetAttribute(String name)
          Returns the value of the named attribute as an Object, or null if no attribute of the given name exists.
 EnumerationgetAttributeNames()
          Returns an Enumeration containing the names of the attributes available to this request.
 StringgetCharacterEncoding()
          Returns the name of the character encoding used in the body of this request.
 intgetContentLength()
          Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known.
 StringgetContentType()
          Returns the MIME type of the body of the request, or null if the type is not known.
 ServletInputStreamgetInputStream()
          Retrieves the body of the request as binary data using a ServletInputStream.
 StringgetLocalAddr()
          Returns the Internet Protocol (IP) address of the interface on which the request was received.
 LocalegetLocale()
          Returns the preferred Locale that the client will accept content in, based on the Accept-Language header.
 EnumerationgetLocales()
          Returns an Enumeration of Locale objects indicating, in decreasing order starting with the preferred locale, the locales that are acceptable to the client based on the Accept-Language header.
 StringgetLocalName()
          Returns the host name of the Internet Protocol (IP) interface on which the request was received.
 intgetLocalPort()
          Returns the Internet Protocol (IP) port number of the interface on which the request was received.
 StringgetParameter(String name)
          Returns the value of a request parameter as a String, or null if the parameter does not exist.
 MapgetParameterMap()
          Returns a java.util.Map of the parameters of this request.
 EnumerationgetParameterNames()
          Returns an Enumeration of String objects containing the names of the parameters contained in this request.
 String[]getParameterValues(String name)
          Returns an array of String objects containing all of the values the given request parameter has, ornull if the parameter does not exist.
 StringgetProtocol()
          Returns the name and version of the protocol the request uses in the formprotocol/majorVersion.minorVersion, for example, HTTP/1.1.
 BufferedReadergetReader()
          Retrieves the body of the request as character data using a BufferedReader.
 StringgetRealPath(String path)
          Deprecated. As of Version 2.1 of the Java Servlet API, useServletContext.getRealPath(java.lang.String) instead.
 StringgetRemoteAddr()
          Returns the Internet Protocol (IP) address of the client or last proxy that sent the request.
 StringgetRemoteHost()
          Returns the fully qualified name of the client or the last proxy that sent the request.
 intgetRemotePort()
          Returns the Internet Protocol (IP) source port of the client or last proxy that sent the request.
 RequestDispatchergetRequestDispatcher(String path)
          Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path.
 StringgetScheme()
          Returns the name of the scheme used to make this request, for example, http, https, or ftp.
 StringgetServerName()
          Returns the host name of the server to which the request was sent.
 intgetServerPort()
          Returns the port number to which the request was sent.
 booleanisSecure()
          Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.
 voidremoveAttribute(String name)
          Removes an attribute from this request.
 voidsetAttribute(String name,Object o)
          Stores an attribute in this request.
 voidsetCharacterEncoding(String env)
          Overrides the name of the character encoding used in the body of this request.

ServletRequest是一个接口,有一个子接口类和两个实现类,表格中显示的方法,由于本人精力和知识有限,只测试其中的几个方法:


(1).getParameter(String name):根据参数名,获取参数值;

(2).getParameterNames():获取所有参数名组成的 Enumeration

(3).getParameterValues(String name):根据参数名,获取参数值组成的String[],用于多参数值;

(4).getParameterMap():获取参数名和参数值的String[]组成的键值对,即返回的类型为Map(String,String[]),用于多参数值



2.项目目录结构




3.LoginServlet


package com.dao.chu;

import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class LoginServlet 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 {
		System.out.println("init...");
		
	}

	@Override
	public void service(ServletRequest servletRequest, ServletResponse servletResponse)
			throws ServletException, IOException {
		
		System.out.println("打印ServletRequest的值: "+servletRequest);
		System.out.println("打印servletResponse的值: "+servletRequest);
		
		//获取表单中的内容
		String userValue = servletRequest.getParameter("user");
		String passwordValue = servletRequest.getParameter("password");
		
		System.out.println("【getParameter】userValue is :"+userValue);
		System.out.println("【getParameter】passwordValue is :"+passwordValue);
		
		//获取提交的所有参数名组成的Enumeration
		Enumeration<String> enNmes = servletRequest.getParameterNames();
		
		//循环
		while (enNmes.hasMoreElements()) {
			
			//获取参数名打印
			String enName = (String) enNmes.nextElement();
			System.out.println("【getParameterNames】enName is :"+enName);
			
			//获取参数值打印
			String enValue = servletRequest.getParameter(enName);
			System.out.println("【getParameterNames】enValue is: "+enValue);
			
		}
		
		//获取参数名和参数值的String[]组成的键值对
		Map<String, String[]> map = servletRequest.getParameterMap();
		
		Set<Entry<String,String[]>> entrySet = map.entrySet();
		
		for (Entry<String, String[]> entry : entrySet) {
			
			System.out.println("【getParameterMap】getNamebyMap is: "+entry.getKey());
			
			System.out.println("【getParameterMap】getValuebyMap is:"+Arrays.asList(entry.getValue()));
		}
		
		//获取多个请求方式的方法
		String[] interests = servletRequest.getParameterValues("interesting");
		
		for (String interest : interests) {
			
			System.out.println("【getParameterValues】interest is :"+interest);
		}
		
	}

}

4.web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>javaWeb_06</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
      <servlet-name>loginServlet</servlet-name>
      <servlet-class>com.dao.chu.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
      <servlet-name>loginServlet</servlet-name>
      <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  
  
</web-app>

5.login.jsp


<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>登陆页</title>
</head>
<body>

	<!-- 相对路径写action="LoginServlet"; -->
	<!-- 绝对路径写action="/javaWeb_06/LoginServlet"; -->
	
	<form action="LoginServlet" method="post">
		用户名:<input type="text" name="user">
		<br><br>
		密码  <input type="password" name="password">
		<br><br>
		
		
		<!-- 一组信息 -->
		interesting:
		<input type="checkbox" name="interesting" value="reading">Reading
		<input type="checkbox" name="interesting" value="writing">Writing
		<input type="checkbox" name="interesting" value="football">Football
		<input type="checkbox" name="interesting" value="game">Game
		<input type="checkbox" name="interesting" value="shopping">Shopping
		<input type="checkbox" name="interesting" value="party">Party
		<input type="checkbox" name="interesting" value="TV">TV
		
		<br><br>
		
		<input type="submit" value="提交">
	</form>
	
</body>
</html>

6.输入用户名:admim 密码:123,选择前三个复选框


7.查看打印信息




8.接下来根据打印信息和下面这张图进行总结



9.总结:

(1).在打印信息中,我们把ServletRequest的值和servletResponse的值都打印了出来,从关键词"apache.catalina"中可以看出:这两个接口的实现类都是由tomcat服务器给予实现的,并在服务器调用service时传入。

(2).请求信息经过tomcat服务器映射到我们的LoginServlet,在LoginServlet调用service方法时候,参数封装在了ServletRequest中,而ServletRequest有一些接收参数的方法。这样loginServlet可以写一些和数据库服务器连接的方法,就可以和数据库里面的值进行比对。

(3).当参数值为一个的时候,大多数我们根据需要应用getParameter方法或getParameterNames,而多参数值的时候,根据需要应用getParameterValuesgetParameterMap方法。


附:


API下载地址:点击打开链接


本次项目代码:点击打开链接


参考视频:点击打开链接

转载于:https://www.cnblogs.com/tongrui/p/6193831.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值