当用户向客户端发送一个请求,如:
[plain] view plaincopy
http://localhost:8088/ServApp/myreq.cg?param1=param
当Socket请求到达服务器(假设是Tomcat服务器),经过Tomcat服务器的一系列封装处理后,请求被封装成HttpServletRequest对象,交由到对应的Servlet。
简单时序图如下:
这里,我们只关注第10步。
在第9步中,request对象传递给Container组件执行。
当Servlet对象获得请求(httpservletrequest),会调用相关函数(Service)进行处理。
下面编写一个简单示例,从说明当前步骤。
1,编写请求处理类(EntryServ)
[java]
package com.serv;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EntryServ extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
ServletContext serv = getServletContext();
//获得request 相关信息
String Contextpath=req.getContextPath();
String CharacterEncoding = req.getCharacterEncoding();
String ContentType = req.getContentType();
String LocalAddr = req.getLocalAddr();
String LocalName = req.getLocalName();
String Method = req.getMethod();
String Parameter = req.getParameter("param1");
String Protocol = req.getProtocol();
String ServerName = req.getServerName();
Cookie[] Cookies = req.getCookies();
String ServletPath = req.getServletPath();
String RemoteAddr = req.getRemoteAddr();
String RemoteHost = req.getRemoteHost();
String RequestURI = req.getRequestURI();
String RequestedSessionId = req.getRequestedSessionId();
req.setCharacterEncoding("gbk");
req.setAttribute("oneattr", "setted");
//response响应请求,输出请求的一些内容
resp.setContentType( "text/html;charset=gbk" ) ; //设置响应页面字符编码
PrintWriter out = resp.getWriter() ;
out.println( "<font color=red ><h1>这是一个Servlet!!!!!</h1></font>" ) ;
out.println("<div>"+"现在用response输出请求相关信息如下:");
out.println("<li>"+"发送请求服务器ip--RemoteAddr="+RemoteAddr+"</li>");
out.println("<li>"+"发送请求服务器主机--RemoteHost="+RemoteHost+"</li>");
out.println("<li>"+"请求的URI--RequestURI="+RequestURI+"</li>");
out.println("<li>"+"发送请求的方法--Method="+Method+"</li>");
out.println("<li>"+"发送请求的协议--Protocol="+Protocol+"</li>");
out.println("<li>"+"请求内容的编码--CharacterEncoding="+CharacterEncoding+"</li>");
out.println("<li>"+"请求的内容类型--ContentType="+ContentType+"</li>");
out.println("<p>");
out.println("<li>"+"当前服务器ip--LocalAddr="+LocalAddr+"</li>");
out.println("<li>"+"服务器主机名--LocalName="+LocalName+"</li>");
out.println("<li>"+"context容器路径---contextpath="+Contextpath+"</li>");
out.println("<li>"+"Server容器名--ServerName="+ServerName+"</li>");
out.println("<li>"+"处理请求Servlet对应的url--ServletPath="+ServletPath+"</li>");
out.println("<li>"+"请求的附加参数--Parameter="+Parameter+"</li>");
out.println("</div>");
out.close() ;
//当此Servlet得到这个请求,可以选择自己处理,或者调用其他页面进行处理
//这里此Servlet将请求内容转给dealpage.jsp这个页面去处理请求。
//相当于本来表单提交给此servlet处理的,现在相当于做一个转向,让提交的表单给dealpage.jsp处理
//RequestDispatcher dispatcher = req.getRequestDispatcher("dealpage.jsp");
//dispatcher.forward(req, resp);
//super.doGet(req, resp);
}
}
请求内容为
[html]
ServApp/myreq.cg?param1=param
故编辑web.xml,让上面的Servlet类能够获得当前的请求:
[html]
<servlet>
<servlet-name>EntryServ</servlet-name>
<servlet-class>com.serv.EntryServ</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EntryServ</servlet-name>
<url-pattern>/myreq.cg</url-pattern>
</servlet-mapping>
其中url-pattern用来映射请求的url,如果对应上,则会调用配置中对应的servlet。
[plain] view plaincopy
http://localhost:8088/ServApp/myreq.cg?param1=param
得到结果如下:

- 开发一个Servlet示例
Servlet响应请求步骤: Servlet是一个基于Java技术的Web组件,运行在服务器端,用户利用Servlet可以很轻松地扩展Web服务器的功能,使其满足特定的应用需要.Tomcat是一个常用 ...
- [C#/Java] C#中调用Servlet示例
需求 通用消息接口使用servlet作为服务器端服务接口,第三方应用程序通过http post的方式调用servlet,实现与通用消息接口的调用连接. 参数说明如下: msgTitle:消息标题,描述 ...
- Servlet 示例
引入jar包: servlet-api.jar ParameterServlet.java package com.mousewheel.springmvc; import java.io.IOExc ...
- 【servlet学习1】使用eclipse+tomcat开发servlet示例
零.开发环境 1.eclipse+tomcat(tomcat插件已安装到eclipse中). 一.开发servlet步骤 1.在eclipse中新建工程 File —> New —> Ot ...
- 5、Servlet的使用
一.什么是Servlet:用于开发动态Web资源的的技术.使用Servlet可以读取来自用户端的数据,而实现了用户与服务器之间的动态数据交互.更简单的说就是连接页面和代码. 1.开发一个动态的Web资 ...
- Servlet 3.0
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发 ...
- Servlet3.0中Servlet的使用
目录 1.注解配置 2.异步调用 3.文件上传 相对于之前的版本,Servlet3.0中的Servlet有以下改进: l 支持注解配置. l 支持异步调用. l 直接有对文件上传的支持. 在这篇 ...
- Servlet 3特性:异步Servlet
解异步Servlet之前,让我们试着理解为什么需要它.假设我们有一个Servlet需要很多的时间来处理,类似下面的内容: LongRunningServlet.java package com.jou ...
- Spring Boot Servlet
上一篇我们对如何创建Controller 来响应JSON 以及如何显示数据到页面中,已经有了初步的了解. Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Serv ...
随机推荐
- NSScanner-备
注意:在扫描的时候,如果 空格是不需要扫描的,那么将会忽略空格. 如下代码: 1 NSString *string = @"my age is d 23 34.0"; ...
- [Codeforces Round #186 (Div. 2)] A. Ilya and Bank Account
A. Ilya and Bank Account time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- 转载收藏之用 - 微信公众平台开发教程(七):解决用户上下文(Session)问题
从这篇文章中我们已经了解了微信公众平台消息传递的方式,这种方式有一个先天的缺陷:不同用户的请求都来自同一个微信服务器,这使得常规的Session无法使用(始终面对同一个请求对象,况且还有对方服务器Co ...
- LeetCode_Rotate Image
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- Resharper上手指南
原文http://www.cnblogs.com/renji/archive/2007/12/11/resharper.html Resharper上手指南 我是visual studio的忠实用户, ...
- MCM1988 问题B_lingo_装货问题
两辆平板车的装货问题有七种规格的包装箱要装到两辆铁路平板车上去包装箱的宽和高是一样的但厚度(t,以厘米计)及重量(,以公斤计)是不同的.下表给出了每种包装箱的厚度重量以及数量每辆平板车有10.2 米长 ...
- CF 579A Raising Bacteria
题意:细菌爱好者在盒子里面培养细菌.最初盒子是空的,每天可以往盒子里面添加任意数目的细菌,而且每天每个细菌会分裂成两个.在某一时刻要想获得某一数量的细菌,要求最初放置的最少的细菌数目. 思路: 求出 ...
- 2D和3D空间中计算两点之间的距离
自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下. 原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去 /// <summary ...
- extjs tree check 级联选择
extjs4 tree check 级联选择 实现效果: 关键代码: function changeAllNode(node, isCheck) { allChild(node, isCheck); ...
- C++ 报错 R6030 CRT not initialized
昨天,在写一个算法的时候,报错R6030 CRT not initialized. 认真检查发现,是出了比较低级的错误. 一. 会出错的代码,编译的时候不会报错,执行过程中报R6030 CRT not ...