Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)

本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法。

还是在java ee工程中进行操作,在WebContent目录下创建一个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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form id="form1" method="POST" action="LoginServlet">
        用户名称:<input id="username" name="username" type="text" />
        用户 密码:<input id="password" name="password" type="password" />
        <br/>
        <input name="checkBox" type="checkbox" value="000"/>000
        <br/>
        <input name="checkBox" type="checkbox" value="001"/>001
        <br/>
        <input name="checkBox" type="checkbox" value="002"/>002
        <br/>
        <input name="checkBox" type="checkbox" value="003"/>003
        <br/>
        <input type="submit" name="submit" value="submit"/>
    </form>
</body>
</html>

在src目录下创建一个LoginServlet类,并实现Servlet接口及实现其接口函数:

  1 package com.dx.hello;
  2
  3 import java.io.IOException;
  4 import java.util.*;
  5
  6 import javax.servlet.Servlet;
  7 import javax.servlet.ServletConfig;
  8 import javax.servlet.ServletException;
  9 import javax.servlet.ServletRequest;
 10 import javax.servlet.ServletResponse;
 11 import javax.servlet.http.HttpServletRequest;
 12
 13 public class LoginServlet implements Servlet {
 14
 15     public LoginServlet() {
 16         // TODO Auto-generated constructor stub
 17     }
 18
 19     @Override
 20     public void destroy() {
 21         // TODO Auto-generated method stub
 22
 23     }
 24
 25     @Override
 26     public ServletConfig getServletConfig() {
 27         // TODO Auto-generated method stub
 28         return null;
 29     }
 30
 31     @Override
 32     public String getServletInfo() {
 33         // TODO Auto-generated method stub
 34         return null;
 35     }
 36
 37     @Override
 38     public void init(ServletConfig arg0) throws ServletException {
 39         // TODO Auto-generated method stub
 40
 41     }
 42
 43     @Override
 44     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
 45         System.out.println("LoginService‘s service ... ");
 46         // ServletRequest的getParameter(String argo)
 47         String username = request.getParameter("username");
 48         String password = request.getParameter("password");
 49         System.out.println("username:" + username);
 50         System.out.println("password:" + password);
 51
 52         // ServletRequest的getParameterNames()
 53         Enumeration<String> names = request.getParameterNames();
 54         while (names.hasMoreElements()) {
 55             String name = names.nextElement();
 56             System.out.println("--->" + name);
 57             String value = request.getParameter(name);
 58             System.out.println("--->" + value);
 59         }
 60
 61         // ServletRequest的getParameterValues(String argo)
 62         String[] checkboxs = request.getParameterValues("checkBox");
 63         for (String value : checkboxs) {
 64             System.out.println("key:checkBox,value:" + value);
 65         }
 66
 67         // ServletRequest的getParameterMap()
 68         Map<String, String[]> map = request.getParameterMap();
 69         for (Map.Entry<String, String[]> item : map.entrySet()) {
 70             System.out
 71                     .println("getParameterMap()---->key:" + item.getKey() + ",value:" + Arrays.asList(item.getValue()));
 72         }
 73
 74         // 强制转化为 HttpServletRequest
 75         HttpServletRequest httpRequest = (HttpServletRequest) request;
 76
 77         // 获取request URI
 78         String requestURI = httpRequest.getRequestURI();
 79         System.out.println("HttpServletRequest的getRequestURI():"+requestURI);
 80
 81         // 获取request Method
 82         String method = httpRequest.getMethod();
 83         System.out.println("HttpServletRequest的getMethod():"+method);
 84
 85         // 获取资源文件在服务器上的物理路径
 86         String relaPath = httpRequest.getRealPath("/WEB-INF/classes/jdbc.properties");
 87         System.out.println("HttpServletRequest的getRealPath():"+relaPath);
 88
 89         // 获取请求过程中,通过uri传递的参数
 90         String queryString = httpRequest.getQueryString();
 91         System.out.println("HttpServletRequest的getQueryString():"+queryString);
 92
 93         // 获取servlet配置路径
 94         String servletPath = httpRequest.getServletPath();
 95         System.out.println("HttpServletRequest的getServletPath():"+servletPath);
 96
 97         // 获取servlet服務名稱。
 98         String servletName = httpRequest.getServerName();
 99         System.out.println("HttpServletRequest的getServerName():"+servletName);
100
101     }
102
103 }

修改web.xml注册LoginServlet servlet:

1     <servlet>
2         <servlet-name>LoginServlet</servlet-name>
3         <servlet-class>com.dx.hello.LoginServlet</servlet-class>
4     </servlet>
5     <servlet-mapping>
6         <servlet-name>LoginServlet</servlet-name>
7         <url-pattern>/LoginServlet</url-pattern>
8     </servlet-mapping>

运行tomcat服务,在浏览器中输入http://localhost:8080/MyServlet001/login.jsp,填写表单信息提交,查看到console输出信息:

LoginService‘s service ...
username:111
password:2222
--->username
--->111
--->password
--->2222
--->checkBox
--->001
--->submit
--->submit
key:checkBox,value:001
key:checkBox,value:002
getParameterMap()---->key:username,value:[111]
getParameterMap()---->key:password,value:[2222]
getParameterMap()---->key:checkBox,value:[001, 002]
getParameterMap()---->key:submit,value:[submit]
HttpServletRequest的getRequestURI():/MyServlet001/LoginServlet
HttpServletRequest的getMethod():POST
HttpServletRequest的getRealPath():D:\java\workset\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\MyServlet001\WEB-INF\classes\jdbc.properties
HttpServletRequest的getQueryString():null
HttpServletRequest的getServletPath():/LoginServlet
HttpServletRequest的getServerName():localhost

代码示例已经完成,接下来进行分析service接收参数的原理及相关对象:

如何在Servlet中获取请求信息?

1、Servlet中的service()方法用于应答请求,每次请求都会调用service()方法。(service方法是服务器调用的)

@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {。。。}

ServletRequest :封装了请求信息,可以从中获取到任何的请求信息;

ServletResponse :封装了响应信息,可以使用该接口的方法实现用户响应的信息。

这两个(ServletRequest 和ServletResponse )接口的实现都是服务器实现的,并在服务器调用service()方法时传入。

可以通过以下操作去查证下:

1 System.out.println(request);
2 //执行上边语句将会输出如下信息:
3 //[email protected]

而这个服务器可能是tomcat,也可能是其他servlet容器。

2、ServletRequest相关函数:

  • ServletRequest的getParameter(String argo)
1 String username = request.getParameter("username");
2 String password = request.getParameter("password");
3 System.out.println("username:" + username);
4 System.out.println("password:" + password);
  • ServletRequest的getParameterNames()
1 Enumeration<String> names = request.getParameterNames();
2 while (names.hasMoreElements()) {
3   String name = names.nextElement();
4   System.out.println("--->" + name);
5   String value = request.getParameter(name);
6   System.out.println("--->" + value);
7 }
  • ServletRequest的getParameterValues(String argo)
1 String[] checkboxs = request.getParameterValues("checkBox");
2 for (String value : checkboxs) {
3     System.out.println("key:checkBox,value:" + value);
4 }
  • ServletRequest的getParameterMap()
1 Map<String, String[]> map = request.getParameterMap();
2 for (Map.Entry<String, String[]> item : map.entrySet()) {
3     System.out
4 .println("getParameterMap()---->key:" + item.getKey() + ",value:" + Arrays.asList(item.getValue()));
5 }
  • HttpServletRequest强制转化为 HttpServletRequest
1 HttpServletRequest httpRequest = (HttpServletRequest) request;
  • HttpServletRequest 获取request URI
1 String requestURI = httpRequest.getRequestURI();
2 System.out.println("HttpServletRequest的getRequestURI():"+requestURI);
  • HttpServletRequest获取request Method
1 String method = httpRequest.getMethod();
2 System.out.println("HttpServletRequest的getMethod():"+method);
  • HttpServletRequest获取资源文件在服务器上的物理路径
1 String relaPath = httpRequest.getRealPath("/WEB-INF/classes/jdbc.properties");
2 System.out.println("HttpServletRequest的getRealPath():"+relaPath);
  • HttpServletRequest获取请求过程中,通过uri传递的参数
1 String queryString = httpRequest.getQueryString();
2 System.out.println("HttpServletRequest的getQueryString():"+queryString);
  • HttpServletRequest获取servlet配置路径
1 String servletPath = httpRequest.getServletPath();
2 System.out.println("HttpServletRequest的getServletPath():"+servletPath);
  • HttpServletRequest获取servlet服務名稱。
String servletName = httpRequest.getServerName();
System.out.println("HttpServletRequest的getServerName():"+servletName);

3.ServletResponse对象

封装了响应信息,如果需要给用户什么响应,具体可以使用该接口的方法实现。

  • getWriter()方法:

可以返回一个PrintWriter对象,调用该对象的print()方法,将把print()中的参数直接打印到客户端浏览器上。

1         // 返回PrintWriter对象,如果想给用户什么响应,具体可以使用该接口的方法实现。
2         PrintWriter out = response.getWriter();
3         out.println("hello");

setContentType(string arg0):

设置相应内容类型:

        // 设置相应的内容类型
        response.setContentType("miscrosoft/word");

内容类型可以参考:/tomcat/config/web.xml中设置信息。

可以通过response对象强制转化为:HttpServletResponse对象。

该对象比ServletResponse接口内容更多。

时间: 2024-10-27 01:56:23

Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)的相关文章

Java Servlet之创建工程(jdk7+tomcat7+eclipse)

本篇文件主要记录下怎么在jdk7+tomcat7下,使用eclipse创建并运行一个servlet工程. 安装具体步骤从网上搜索就可以找到,这里不再赘述. 在eclipse中切换到j2ee下, 从导航菜单windows下找到show view选项,并在show view下找到server. 在server中创建tomcat server. 并从导航菜单file下找->new->dynamic web project. 在project name中输入工程名称MyServlet001 一直下一步

Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)

该篇文章记录了Servlet配置相关用法及Servlet在Servlet容器中生命周期方法. Tomcat是一个Servlet容器: 1.Servlet容器管理了Servlet的整个生命周期,并调用servlet的生命周期的方法. 2.Servlet容器不只是Servlet的生命周期,而且还是Jsp,Filter,Listener,Tag等生命周期管理容器. Servlet的注册与运行 1.Servlet程序必须通过Servlet容器来启动运行,并且存储目录有特殊要求,通常servlet编译好的

Java Servlet(七):JavaWeb MVC 操作(jdk7+tomcat7+eclipse)

之前一段时间一直忙于毕业设计,也没有空学习了,本篇继续学习. 本篇将开始学习java web下使用servlet下来操作数据库,并展示到界面上的使用方法. 新建工程ServletMvc001. 目录结构如下: web.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quo

Java中的Serializable接口transient关键字,及对象IO

1.什么是序列化和反序列化Serialization是一种将对象转为为字节流的过程:deserialization是将字节流恢复为对象的过程. 2.什么情况下需要序列化a)当你想把的内存中的对象保存到一个文件中或者数据库中时候:b)当你想用套接字在网络上传送对象的时候:c)当你想通过RMI传输对象的时候: 3.如何实现序列化将需要序列化的类实现Serializable接口就可以了,Serializable接口和Cloneable接口一样,不含任何方法,是个标记接口. 4.代码分析 package

java web ; servlet(1)

Java Web应用由一组Servlet.HTML页.类.以及其它可以被绑定的资源构成; 它可以在各种供应商提供的实现Servlet规范的 Servlet容器 中运行. servlet容器为java web应用提供运行时环境,它负责管理Servlet和jsp的生命周期,以及管理它们的共享数据. 目前最流行的Servlet容器有: tomcat:Resin:J2EE服务器(如Weblogic)中也提供了内置的Servlet容器. web结构: – WEB-INF目录下的classes和lib目录都

Java EE javax.servlet中的Servlet接口

Servlet接口 public interface Servlet 其实现类有:FaceServlet.GenericServlet.HttpServlet 一.介绍 Servlet接口定义了所有servlet(实现该接口的类)必须实现的方法. 我们通常所说的servlet,是指运行在服务器上的Java小程序,这里可以称为Servlet程序.他们通常是通过HTTP协议,从Web客户端接收请求并做出响应. 如果要实现这个接口,可以通过继承GenericServlet类创建一个通用的.协议无关的S

Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作

前面三篇文章讲述了如何配置MyEclipse和Tomcat开发JSP网站.如何配置Servlet简单实现表单提交.如何配置MySQL实现JSP数据库查询. 这篇文章主要讲述Servlet表单的提交.Java中实现数据库的查询操作和自己遇到的瓶颈及理解.Java Web基础性文章,希望对大家有所帮助~ Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+

Java学习资料-Servlet单例多线程

Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例): 2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池通过web.xml,初始化每个参数值等等. 3.当请求到达时,Servlet容器通过

Servlet总结——servlet的主要接口、类

Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet接口,该接口定义了5个方法.如下: 1.init(),初始化servlet对象,完成一些初始化工作. 它是由servlet容器控制的,该方法只能被调用一次,初始化过程如下: 2.service(),接受客户端请求对象,执行业务操作,利用响应对象响应客户端请求. 3.destroy(),当容器监测到一