Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中
以下代码均非IDE开发,所以都不规范,仅供参考
模拟Servlet本质:
模拟Servlet接口:
- /*
- SUN公司制定的JavaEE规范:Servlet规范
- Servlet接口是Servlet规范中核心接口
- 接口注意:调用者谁?实现者谁?
- */
- public interface Servlet //服务器端小java程序不能随意编写,必须实现Servlet接口
- {
- /*
- 服务器端的小java程序必须将service方法实现
- */
- void service();
- }
服务器端小java程序(即Servlet接口的实现类):
- /*
- JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
- */
- public class LoginServlet implements Servlet
- {
- public void service(){
- System.out.println("连接数据库,正在验证用户名和密码。。。。");
- }
- }
- /*
- JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
- */
- public class SaveServlet implements Servlet
- {
- public void service(){
- System.out.println("连接数据库,正在保存数据请稍后。。。。");
- }
- }
- /*
- JavaWeb程序员编写服务器端小java程序的时候,不能随意编写,必须实现Servlert接口
- */
- public class DeleteServlet implements Servlet
- {
- public void service(){
- System.out.println("连接数据库,正在删除数据请稍后。。。。");
- }
- }
模拟Tomcat容器:
- /*
- Tomcat
- WebServer
- Web服务器
- Web Container
- Web 容器
- Web容器面向Servlert接口调用
- */
- import java.util.Scanner;
- import java.util.Properties;
- import java.io.FileReader;
- public class Tomcat{
- public static void main(String[] args) throws Exception{
- Scanner s = new Scanner(System.in);
- System.out.println("服务器启动成功");
- while(true){
- System.out.print("请打开浏览器,在浏览器地址栏上请输入请求路径:");
- //程序执行到这里,等待用户输入
- String requestPath = s.next();
- //System.out.println("您访问的资源路径是:" + requestPath);
- //Tomcat读取web.xml文件
- FileReader reader = new FileReader("web.xml");
- Properties pro = new Properties();
- pro.load(reader);
- reader.close();
- //通过key获取value
- String servletClassName = pro.getProperty(requestPath);
- //通过反射机制创建对象
- Class c = Class.forName(servletClassName);
- Servlet servlet = (Servlet)c.newInstance();
- //面向Servlet接口调用方法即可
- servlet.service();
- }
- }
- }
模拟web.xml:
- /login=LoginServlet
- /delete=DeleteServlet
- /save=SaveServlet
总结:Tomcat容器根据web.xml配置文件,调用Servlet接口的方法,自己编写的服务器小程序则具体实现Servlet接口的方法。
第一个Servlet程序:
Servlet程序:
- import javax.servlet.Servlet;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.ServletException;
- import java.io.IOException;
- public class HelloServlet implements Servlet{
- public void init(ServletConfig config) throws ServletException{
- //将信息打印到控制台(而不是浏览器)
- System.out.println("Hello world!");
- }
- public void service(ServletRequest request,ServletResponse response)
- throws IOException,ServletException{
- }
- public void destroy(){
- }
- public String getServletInfo(){
- return null;
- }
- public ServletConfig getServletConfig(){
- return null;
- }
- }
前端页面:
- <html>
- <head>
- <title>welcome page</title>
- </head>
- <body>
- <!--为了更加的通用,URL路径中的IP地址,端口号可以省略-->
- <!--以下网络资源路径还是一个绝对路径,目前必须以"/"开始-->
- <a href="/FirstServletWebApp/hello">HelloServlet</a>
- </body>
- </html>
web.xml:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <!--这是一个合法的web.xml文件-->
- <!--一个webapp只有一个web.xml文件-->
- <!--web.xml文件主要配置请求路径和Servlet类名之间的绑定关系-->
- <!--web.xml文件在Tomcat服务器启动阶段被解析-->
- <!--web.xml文件解析失败,会导致webapp启动失败-->
- <!--web.xml文件中的标签不能随意编写,因为Tomcat服务器早就知道文件中编写了哪些标签-->
- <!--web.xml文件中的标签也是SUN公司制定的Servlet规范-->
- <servlet>
- <servlet-name>thisIsServletName</servlet-name>
- <servlet-class>HelloServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>thisIsServletName</servlet-name>
- <!--路径随意编写,但是必须以"/"开始-->
- <!--这是一个虚拟路径,只是代表一个资源的名称-->
- <url-pattern>/df/s/fs/f/sdf/s/f</url-pattern>
- <!--可以编写多个url-pattern,但是路径需要以"/"开始-->
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
- </web-app>
将响应结果输出到浏览器中:
Servlet程序:
- import javax.servlet.Servlet;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import java.io.IOException;
- import java.io.PrintWriter; //标准输出流,不需要关闭
- public class WelcomeServlet implements Servlet{
- public void init(ServletConfig config) throws ServletException{
- }
- public void service(ServletRequest request,ServletResponse response)
- throws ServletException,IOException{
- //解决响应的时候中文乱码问题
- //设置响应的内容类型以及字符编码方式
- //在获取响应流之前设置有效果
- response.setContentType("text/html;charset=UTF-8");
- //将信息输出到浏览器上
- //将HTML字符串输出到浏览器上,浏览器解释执行
- //获取输出流对象,流直接指向特定的浏览器客户端
- PrintWriter out = response.getWriter();
- //响应HTML代码到浏览器,并且在网页上体现换行
- out.print("<html>");
- out.print("<head>");
- out.print("<title>welcome servlet</title>");
- out.print("</head>");
- out.print("<body>");
- out.print("<h1 align=\"center\">welcome study servlet!</h1>");
- out.print("hello");
- out.print("<br>");
- out.print("你好中国!");
- out.print("</body>");
- out.print("</html>");
- }
- public void destroy(){
- }
- public String getServletInfo(){
- return null;
- }
- public ServletConfig getServletConfig(){
- return null;
- }
- }
web.xml:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <servlet>
- <servlet-name>helloServlet</servlet-name>
- <servlet-class>WelcomeServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>helloServlet</servlet-name>
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
- </web-app>
Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中的更多相关文章
- Servlet+JSP(三):第一个Web程序
Servlet+JSP(三):第一个Web程序在学习了服务器并成功安装后,我们知道当浏览器发送请求给服务器后,服务器会调用并执行对应的逻辑代码进行请求处理.逻辑代 码是由程序员自己编写然后放进服务器进 ...
- Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...
- 编写一个应用程序,在主类Test1类中,创建两个链表List<E>对象,分别存储通过键盘输入的字符串内容
题目1:编写一个应用程序,在主类Test1类中,创建两个链表List<E>对象,分别存储通过键盘输入的字符串内容--"chen","wang",&q ...
- 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件
*.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...
- Java笔记2:Eclipse编写第一个Java程序
1 下载并安装jdk 2 下载较新版本的eclipse,eclipse都是非安装版的,解压缩即可. 3 双击eclipse.exe,打开elipse软件 4 FileàNewàProject 5 选择 ...
- 在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口
#define ProcessBasicInformation 0 typedef struct { DWORD ExitStatus; DWORD PebBaseAddress; DWORD Aff ...
- [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 对于Servlet、Servlet容器以及一个Servlet容器-Tomcat
Servlet.Servlet容器等内容讲解 转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的 ...
- Servlet入门总结及第一个Servlet程序
目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...
随机推荐
- 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase
Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...
- Spring、MyBatis和SpringMVC整合的jar包下载
spring mvc的jar包下载:http://repo.springsource.org/libs-release-local/org/springframework/spring/我下载的5.0 ...
- Everyone is tester
有一本书叫<人人都是产品经理>,作者在书中介绍了在做产品的过程中学到的思维方式和做事方式,受到行业大众的认可 作为一名测试老鸟,我想说,其实Everyone is tester 为 ...
- P1155 双栈排序
题目描述 Tom最近在研究一个有趣的排序问题.如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序. 操作aaa 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果 ...
- python的/和//运算
#谁能告诉我这个框框怎么去掉!!! python中"/"操作为除法操作,"//"操作为整数除操作,具体差异如下 " / "表示 浮点数除法, ...
- PHP 字符串数组按照拼音排序的问题
拼音排序的规则: 字符串包括特殊字符.数字.英文字符.中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英 ...
- 【POJ2411】Mondriaan's Dream(轮廓线DP)
[POJ2411]Mondriaan's Dream(轮廓线DP) 题面 Vjudge 题解 这题我会大力状压!!! 时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前 ...
- wazuh安装手册
一.wazhu部署架构 1.服务器上运行的Agent端会将采集到的各种信息通过加密信道传输到管理端. 2.管理端负责分析从代理接收的数据,并在事件与告警规则匹配时触发警报. 3.LogStash会将告 ...
- 3:JavaBean,EJB,POJO
JavaBeanJavaBean是公共Java类,但是为了编辑工具识别,需要满足至少三个条件: 有一个public默认构造器(例如无参构造器,) 属性使用public 的get,set方法访问,也就是 ...
- 南昌邀请赛网络赛 D.Match Stick Game(dp)
南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...