以下代码均非IDE开发,所以都不规范,仅供参考

模拟Servlet本质:

  模拟Servlet接口:

  1. /*
  2. SUN公司制定的JavaEE规范:Servlet规范
  3. Servlet接口是Servlet规范中核心接口
  4. 接口注意:调用者谁?实现者谁?
  5. */
  6.  
  7. public interface Servlet //服务器端小java程序不能随意编写,必须实现Servlet接口
  8. {
  9. /*
  10. 服务器端的小java程序必须将service方法实现
  11. */
  12. void service();
  13. }

  服务器端小java程序(即Servlet接口的实现类):

  1. /*
  2. JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
  3. */
  4. public class LoginServlet implements Servlet
  5. {
  6. public void service(){
  7. System.out.println("连接数据库,正在验证用户名和密码。。。。");
  8. }
  9. }
  1. /*
  2. JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
  3. */
  4. public class SaveServlet implements Servlet
  5. {
  6. public void service(){
  7. System.out.println("连接数据库,正在保存数据请稍后。。。。");
  8. }
  9. }
  1. /*
  2. JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
  3. */
  4. public class DeleteServlet implements Servlet
  5. {
  6. public void service(){
  7. System.out.println("连接数据库,正在删除数据请稍后。。。。");
  8. }
  9. }

  模拟Tomcat容器:

  1. /*
  2. Tomcat
  3. WebServer
  4. Web服务器
  5. Web Container
  6. Web 容器
  7.  
  8. Web容器面向Servlert接口调用
  9. */
  10. import java.util.Scanner;
  11. import java.util.Properties;
  12. import java.io.FileReader;
  13.  
  14. public class Tomcat{
  15. public static void main(String[] args) throws Exception{
  16. Scanner s = new Scanner(System.in);
  17. System.out.println("服务器启动成功");
  18.  
  19. while(true){
  20. System.out.print("请打开浏览器,在浏览器地址栏上请输入请求路径:");
  21. //程序执行到这里,等待用户输入
  22. String requestPath = s.next();
  23. //System.out.println("您访问的资源路径是:" + requestPath);
  24.  
  25. //Tomcat读取web.xml文件
  26. FileReader reader = new FileReader("web.xml");
  27. Properties pro = new Properties();
  28. pro.load(reader);
  29. reader.close();
  30.  
  31. //通过key获取value
  32. String servletClassName = pro.getProperty(requestPath);
  33.  
  34. //通过反射机制创建对象
  35. Class c = Class.forName(servletClassName);
  36. Servlet servlet = (Servlet)c.newInstance();
  37.  
  38. //面向Servlet接口调用方法即可
  39. servlet.service();
  40. }
  41. }
  42. }

  模拟web.xml:

  1. /login=LoginServlet
  2. /delete=DeleteServlet
  3. /save=SaveServlet

  总结:Tomcat容器根据web.xml配置文件,调用Servlet接口的方法,自己编写的服务器小程序则具体实现Servlet接口的方法。

第一个Servlet程序:

  Servlet程序:

  1. import javax.servlet.Servlet;
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletRequest;
  4. import javax.servlet.ServletResponse;
  5. import javax.servlet.ServletException;
  6. import java.io.IOException;
  7.  
  8. public class HelloServlet implements Servlet{
  9.  
  10. public void init(ServletConfig config) throws ServletException{
  11. //将信息打印到控制台(而不是浏览器)
  12. System.out.println("Hello world!");
  13. }
  14.  
  15. public void service(ServletRequest request,ServletResponse response)
  16. throws IOException,ServletException{
  17.  
  18. }
  19.  
  20. public void destroy(){
  21.  
  22. }
  23.  
  24. public String getServletInfo(){
  25. return null;
  26. }
  27.  
  28. public ServletConfig getServletConfig(){
  29. return null;
  30. }
  31.  
  32. }

  前端页面:

  1. <html>
  2. <head>
  3. <title>welcome page</title>
  4. </head>
  5. <body>
  6. <!--为了更加的通用,URL路径中的IP地址,端口号可以省略-->
  7. <!--以下网络资源路径还是一个绝对路径,目前必须以"/"开始-->
  8. <a href="/FirstServletWebApp/hello">HelloServlet</a>
  9. </body>
  10. </html>

  web.xml:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  6. version="3.0">
  7. <!--这是一个合法的web.xml文件-->
  8. <!--一个webapp只有一个web.xml文件-->
  9. <!--web.xml文件主要配置请求路径和Servlet类名之间的绑定关系-->
  10. <!--web.xml文件在Tomcat服务器启动阶段被解析-->
  11. <!--web.xml文件解析失败,会导致webapp启动失败-->
  12. <!--web.xml文件中的标签不能随意编写,因为Tomcat服务器早就知道文件中编写了哪些标签-->
  13. <!--web.xml文件中的标签也是SUN公司制定的Servlet规范-->
  14. <servlet>
  15. <servlet-name>thisIsServletName</servlet-name>
  16. <servlet-class>HelloServlet</servlet-class>
  17. </servlet>
  18. <servlet-mapping>
  19. <servlet-name>thisIsServletName</servlet-name>
  20. <!--路径随意编写,但是必须以"/"开始-->
  21. <!--这是一个虚拟路径,只是代表一个资源的名称-->
  22. <url-pattern>/df/s/fs/f/sdf/s/f</url-pattern>
  23. <!--可以编写多个url-pattern,但是路径需要以"/"开始-->
  24. <url-pattern>/hello</url-pattern>
  25. </servlet-mapping>
  26.  
  27. </web-app>

  

将响应结果输出到浏览器中:

  Servlet程序:

  1. import javax.servlet.Servlet;
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.ServletRequest;
  5. import javax.servlet.ServletResponse;
  6. import java.io.IOException;
  7. import java.io.PrintWriter; //标准输出流,不需要关闭
  8.  
  9. public class WelcomeServlet implements Servlet{
  10. public void init(ServletConfig config) throws ServletException{
  11.  
  12. }
  13.  
  14. public void service(ServletRequest request,ServletResponse response)
  15. throws ServletException,IOException{
  16. //解决响应的时候中文乱码问题
  17. //设置响应的内容类型以及字符编码方式
  18. //在获取响应流之前设置有效果
  19. response.setContentType("text/html;charset=UTF-8");
  20.  
  21. //将信息输出到浏览器上
  22. //将HTML字符串输出到浏览器上,浏览器解释执行
  23. //获取输出流对象,流直接指向特定的浏览器客户端
  24. PrintWriter out = response.getWriter();
  25.  
  26. //响应HTML代码到浏览器,并且在网页上体现换行
  27. out.print("<html>");
  28. out.print("<head>");
  29. out.print("<title>welcome servlet</title>");
  30. out.print("</head>");
  31. out.print("<body>");
  32. out.print("<h1 align=\"center\">welcome study servlet!</h1>");
  33. out.print("hello");
  34. out.print("<br>");
  35. out.print("你好中国!");
  36. out.print("</body>");
  37. out.print("</html>");
  38. }
  39.  
  40. public void destroy(){
  41.  
  42. }
  43.  
  44. public String getServletInfo(){
  45. return null;
  46. }
  47.  
  48. public ServletConfig getServletConfig(){
  49. return null;
  50. }
  51. }

  web.xml:

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  6. version="3.0">
  7.  
  8. <servlet>
  9. <servlet-name>helloServlet</servlet-name>
  10. <servlet-class>WelcomeServlet</servlet-class>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>helloServlet</servlet-name>
  14. <url-pattern>/hello</url-pattern>
  15. </servlet-mapping>
  16.  
  17. </web-app>

Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中的更多相关文章

  1. Servlet+JSP(三):第一个Web程序

    Servlet+JSP(三):第一个Web程序在学习了服务器并成功安装后,我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进 ...

  2. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

  3. 编写一个应用程序,在主类Test1类中,创建两个链表List<E>对象,分别存储通过键盘输入的字符串内容

    题目1:编写一个应用程序,在主类Test1类中,创建两个链表List<E>对象,分别存储通过键盘输入的字符串内容--"chen","wang",&q ...

  4. 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  5. Java笔记2:Eclipse编写第一个Java程序

    1 下载并安装jdk 2 下载较新版本的eclipse,eclipse都是非安装版的,解压缩即可. 3 双击eclipse.exe,打开elipse软件 4 FileàNewàProject 5 选择 ...

  6. 在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口

    #define ProcessBasicInformation 0 typedef struct { DWORD ExitStatus; DWORD PebBaseAddress; DWORD Aff ...

  7. [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. 对于Servlet、Servlet容器以及一个Servlet容器-Tomcat

    Servlet.Servlet容器等内容讲解 转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的 ...

  9. Servlet入门总结及第一个Servlet程序

    目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...

随机推荐

  1. 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase

    Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...

  2. Spring、MyBatis和SpringMVC整合的jar包下载

    spring mvc的jar包下载:http://repo.springsource.org/libs-release-local/org/springframework/spring/我下载的5.0 ...

  3. Everyone is tester

    有一本书叫<人人都是产品经理>,作者在书中介绍了在做产品的过程中学到的思维方式和做事方式,受到行业大众的认可 作为一名测试老鸟,我想说,其实Everyone is tester     为 ...

  4. P1155 双栈排序

    题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作aaa 如果输入序列不为空,将第一个元素压入栈S1​ 操作b 如果 ...

  5. python的/和//运算

    #谁能告诉我这个框框怎么去掉!!! python中"/"操作为除法操作,"//"操作为整数除操作,具体差异如下 " / "表示 浮点数除法, ...

  6. PHP 字符串数组按照拼音排序的问题

    拼音排序的规则: 字符串包括特殊字符.数字.英文字符.中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英 ...

  7. 【POJ2411】Mondriaan's Dream(轮廓线DP)

    [POJ2411]Mondriaan's Dream(轮廓线DP) 题面 Vjudge 题解 这题我会大力状压!!! 时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前 ...

  8. wazuh安装手册

    一.wazhu部署架构 1.服务器上运行的Agent端会将采集到的各种信息通过加密信道传输到管理端. 2.管理端负责分析从代理接收的数据,并在事件与告警规则匹配时触发警报. 3.LogStash会将告 ...

  9. 3:JavaBean,EJB,POJO

    JavaBeanJavaBean是公共Java类,但是为了编辑工具识别,需要满足至少三个条件: 有一个public默认构造器(例如无参构造器,) 属性使用public 的get,set方法访问,也就是 ...

  10. 南昌邀请赛网络赛 D.Match Stick Game(dp)

    南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...