一个简单的Servlet示例
来源:互联网 发布:农村淘宝合伙人考试 编辑:程序博客网 时间:2024/05/16 07:35
当用户向客户端发送一个请求,如:
http://localhost:8088/ServApp/myreq.cg?param1=param
当请求通过网络路由,到达服务器(假设是Tomcat服务器),Tomcat正在监听端口8088发过来的消息。消息到达后,Tomcat接收到此次请求的Socket。
经过Tomcat服务器的一系列封装处理后,请求被封装成HttpServletRequest对象,交由到对应的Servlet。
简单时序图如下:
这里,我们只关注第10步。
在第9步中,request对象传递给Container组件执行。
当Servlet对象获得请求(httpservletrequest),会调用相关函数(Service)进行处理。
下面编写一个简单示例,从说明当前步骤。
1,编写请求处理类(EntryServ)
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;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubServletContext 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);}}
请求内容为
ServApp/myreq.cg?param1=param
故编辑web.xml,让上面的Servlet类能够获得当前的请求:
<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。
在浏览器中输入请求:
http://localhost:8088/ServApp/myreq.cg?param1=param
得到结果如下:
- 一个简单的Servlet示例
- JSP+Servlet的简单示例
- 一个简单的Servlet
- 一个简单的Servlet .
- Servlet中过滤器的简单示例
- Servlet中监听器的简单示例
- 一个最简单的servlet
- 一个简单的Servlet程序
- 一个简单的servlet程序
- Servlet的一个简单调用
- 一个简单的servlet 程序
- 一个简单的servlet容器
- 一个简单的servlet服务器
- 一个简单的破解示例
- SpringJdbc的一个简单示例
- 一个简单的iBatis示例
- ActiveMQ的一个简单示例
- 泛型类的一个简单示例
- 通过 PDFRenderer 实现预览PDF 功能
- 使用Vitamio打造自己的Android万能播放器(1)——准备
- 查看数据库中有哪些活动的事务,对应的会话id,执行的语句
- C++各大有名库的介绍——XML
- Openfire源码分析
- 一个简单的Servlet示例
- Map/reduce 输出格式化
- stack模拟进栈出栈
- 三角函数
- 第八周项目2-计算定期还款金额
- 企业级敏捷转型系列专题之一 —— 建立试点项目
- windows 下通过端口号查找对应进程ID及其路径
- live555学习笔记10-h264 RTP传输详解(2)
- Hbase 建表基本命令总结