当前位置:   article > 正文

servlet_web站点、web应用、http服务器、web应用服务器

web站点、web应用、http服务器、web应用服务器

目录

1、C/S、B/S与RIA

C/S和B/S区别

2、Web站点、Web应用、HTTP服务器、Web应用服务器

3、开发Web应用的核心技术

4、Tomcat介绍及安装

5、Tomcat的目录结构​​​​​​​

6、解决Tomcat控制台的乱码

7、常见其他Servlet容器简介

8、Servlet的概念及功能

在生成的servlet中添加

9、web.xml中配置Servlet

10、运行Web应用

11、Servlet的生命周期

servlet家谱

servlet生命周期​​​​​​​

 ​​​​​​​各个方法的执行顺序和次数

​​​​​​​servlet的特性

ServletAPI查询地址

Web应用常见的错误

404找不到请求的资源

500代表服务器内部错误

 ​​​​​​​页面无法显示:未启动Tomcat

​​​​​​​设置响应编码:UTF-8

向页面输出


1、C/S、B/S与RIA

C/S

Client/Server:客户端/服务器的简称,又称为胖客户端,需要在电脑上安装特定的软件.例如:QQ

  • B/S
  • Browser/Server:浏览器/服务器的简称,又称为瘦客户端,不需要在电脑上安装特定的软件,只需在电脑上安装一个浏览器即可. 例如:在浏览器访问一个百度网页.​​​​​​​
  • C/S和B/S区别

  • C/S需要安装客户端软件,但是操作往往更为便捷,用户体验好,安全性好;
  • B/S不需要安装客户端软件,但是用户体验往往不如C/S好,安全性也较C/S要低

​​​​​​​RIA

1、​​​​​​​​​​​​​​定义:Rich Internet Applications:富客户端网络应用

​​​​​​​2、目标:

  • 基于B/S架构
  • 在浏览器实现与胖客户端(C/S)类似的用户体验,比如:局部刷新,拖拽功能.
  • 2、Web站点、Web应用、HTTP服务器、Web应用服务器

    Web站点
  • Web Site,也称为Web 网站,例如:某公司用来宣传的网站就是Web站点,用户浏览公司的信息,该站点不提供服务.属于静态站点.
  • Web应用
  • Web Application,就是通过浏览器访问的应用程序,为用户提供相关的服务,属于动态网站.例如:京东,淘宝,天猫
  • HTTP服务器
  • 1、定义:Web服务器,提供网上信息浏览服务、
  • 2、例子:apache nginx IIS
  • 3、特点:使用浏览器访问web站点或者web应用,必须通过HTTP服务器.
  • Web应用服务器
  • 1、定义:能够运行服务器上的应用程序,并将结果返回给客户端浏览器的软件.
  • 2、例子:Tomcat就是Web应用服务器
  • 3、特点:兼具HTTP服务器的部分功能.
  • 3、开发Web应用的核心技术

    1、CGI:Common Gateway Interface :通用网关接口,web应用服务器提供信息服务的标准接口,目前使用较少.
  • 2、.net:微软公司的企业应用框架,如:Asp.net,Ado.net
  • 中小型企业使用.不能跨平台.
  • 3、php:php是一个相对易学的web开发技术,在互联网小型应用中使用广泛.
  • 4、JavaEE:是Oracle公司的企业应用框架,在大型的企业应用广泛.例如:Servlet,JSP是Web开发组件.
  • 4、Tomcat介绍及安装

    什么是Tomcat
  • Tomcat是Web应用服务器,又称为Servlet Container(Servlet 容器)
  • Tomcat的特点
  • 开源
  • 免费
  • 中小型应用和并发访问用户不是很多的情况下广泛使用
  • 是开发调试Servlet/Jsp程序的首选

​​​​​​​Tomcat的官网

  • Apache Tomcat® - Welcome!
  • 使用9.0版本
  • 5、Tomcat的目录结构​​​​​​​

  • 1、bin:Tomcat的启动(startup.bat),停止(shutdown.bat)的批处理脚本和shell脚本
  • 2、config:Tomcat的相关配置文件
  • 3、lib:Tomcat服务器的依赖库目录,包括Tomcat服务器运行环境的依赖的jar包
  • 4、logs:Tomcat默认的日志存放目录.
  • 5、temp:Tomcat 运行过程中产生的临时文件
  • 6、webapps:Tomcat默认的web应用部署目录
  • 7、work:jsp代码生成和编译后产生的class目录
  • 6、解决Tomcat控制台的乱码

    1.进入conf文件夹

    2.打开logging.properties文件

    3.修改java.util.logging.ConsoleHandler.encoding = GBK

  • 7、常见其他Servlet容器简介

  • JBoss
  • Resin
  • GlassFish 4
  • 补充:
  • Weblogic  bea oracle
  • Websphere IBM
  • 8、Servlet的概念及功能

    什么是Servlet
  • Servlet是JavaEE规范中的Web开发组件,运行在服务器端的java程序.​​​​​​​
  • Servlet特点
  1. 运行在服务器端
  2. 需要Servlet容器的支持(如:Tomcat)
  3. Servlet是一个Java类,遵守一定的开发规范,比如继承HttpServlet
  4. 通过浏览器访问Servlet,Servlet返回给浏览器动态页面

​​​​​​​

  • 本课程所学的主要内容:Servlet和JSP,JSP的本质是Servlet.
  • 在生成的servlet中添加

    1. /**
    2. * 浏览器地址栏输入http://localhost:8080/hello会调用servlet的doGet()方法
    3. * @param request 请求对象.取得请求的数据(浏览器传过来的数据)
    4. * @param response 响应对象.返回浏览器数据放在该对象中
    5. * @throws ServletException
    6. * @throws IOException
    7. */
    8. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    9. //生成动态的内容返回到浏览器显示
    10. // 取得响应的输出流对象
    11. PrintWriter out = response.getWriter();
    12. // 向out输出流对象写内容浏览器就能接收到,并在页面进行显示
    13. out.print("Hello Servlet!");
    14. }

    9、web.xml中配置Servlet

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4.          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5.          version="4.0">
    6.     <!--配置Servlet,可以手动配置-->
    7.     <servlet>
    8.         <!--Servlet的名称-->
    9.         <servlet-name>HelloServlet</servlet-name>
    10.         <!--servlet类的全路径名-->
    11.         <servlet-class>com.tjetc.servlet.HelloServlet</servlet-class>
    12.     </servlet>
    13.     <servlet-mapping>
    14.         <!--Servlet的名称-->
    15.         <servlet-name>HelloServlet</servlet-name>
    16.         <!--外部访问servlet的url,初学者写/开头-->
    17.         <url-pattern>/hello</url-pattern>
    18.     </servlet-mapping>
    19. </web-app>

  • 说明:
  • <servlet>元素
  • 包含<servlet-name>及<servlet-class>,其中<servlet-name>可以使用任意标识符,<servlet-class>是Servlet类的完整类名;
  • <servlet-mapping>元素
  • 包含<servlet-name>及<url-pattern>,其中<servlet-name>与已经定义的name对应,<url-pattern>是逻辑url,非常非常重要,访问Servlet就使用这个url-pattern
  • 10、运行Web应用

  • Tomcat如何找到servlet并实例化的?

    第一步:在浏览器地址栏输入访问路径,向服务器发送请求;

    第二步:服务器根据访问路径去web.xml文件中和<url-pattern>标签中的虚拟路径进行匹配,匹配成功后,找到已注册的servlet名称;

    第三步:根据映射找到对应的servlet名,注意:<servlet-mapping>下的<servlet-name>标签和<servlet>下的<servlet-name>标签中的值必须相同;

    第四步:根据servlet名找到全限定类名,即我们自己写的类。

    服务器找到全限定类名后,通过反射调用Class对象的newInstance()方法,实例化一个如:HelloServlet对象,注意一定要为HelloServlet提供一个无参的构造方法。同时也创建了servletConfig,里面存放了一些初始化信息(注意:服务器只会创建一次HelloServlet对象,所以servletConfig也只有一个)。

  • 11、Servlet的生命周期

    servlet家谱

  • 二类二接口
  • 3加2方法
  • servlet生命周期​​​​​​​

  1. package com.tjetc;
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.IOException;
  8. import java.io.PrintWriter;
  9. public class HelloServlet extends HttpServlet {
  10. public HelloServlet() {
  11. System.out.println("构造方法HelloServlet()...");
  12. }
  13. @Override
  14. public void init(ServletConfig config) throws ServletException {
  15. System.out.println("初始化init(config)有参");
  16. super.init(config);
  17. }
  18. @Override
  19. public void init() throws ServletException {
  20. System.out.println("初始化init()无参");
  21. super.init();
  22. }
  23. @Override
  24. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  25. System.out.println("service()...");
  26. super.service(req, resp);
  27. }
  28. //接收get请求
  29. @Override
  30. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  31. System.out.println("doGet()...");
  32. // int i = 1 / 0;//java.lang.ArithmeticException: / by zero
  33. // doPost(req, resp);
  34. //设置编码
  35. resp.setContentType("text/html;charset=utf-8");
  36. StringBuilder sb=new StringBuilder();
  37. sb.append("<table border='1', cellspacing='0'>");
  38. sb.append("<tr>");
  39. sb.append("<td>序号</td><td>姓名</td><td>年龄</td>");
  40. sb.append("<tr>");
  41. sb.append("</tr>");
  42. sb.append("<td>1</td><td>张三</td><td>19</td>");
  43. sb.append("<tr>");
  44. sb.append("</tr>");
  45. sb.append("<td>2</td><td>李四</td><td>20</td>");
  46. sb.append("</tr>");
  47. sb.append("</table>");
  48. //输出字符串
  49. resp.getWriter().write(sb.toString());
  50. }
  51. //接收post请求
  52. @Override
  53. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  54. System.out.println("doPost()...");
  55. //获取输入流
  56. PrintWriter writer = resp.getWriter();
  57. //把字符串输出到页面中
  58. writer.write("<h1>Hello Servlet i am coming</h1>");
  59. }
  60. @Override
  61. public void destroy() {
  62. System.out.println("destroy()...");
  63. super.destroy();
  64. }
  65. }

 

 ​​​​​​​各个方法的执行顺序和次数

1、Tomcat启动,各个方法没有执行

2、第一次访问的时候执行顺序:

  • HelloServlet的构造方法
  • HelloServlet.init初始化方法
  • HelloServlet.service()方法
  • method = GET

3、第二次以及以后访问的时候执行顺序

  • HelloServlet.service()方法
  • method = GET

4、执行次数

  • 构造方法,初始化方法执行一次
  • service()方法 doXXX()执行多次
  • 销毁方法destroy()方法执行一次

​​​​​​​servlet的特性

  • 多线程单实例
  • 单例模式:在整个应用运行期间,只有一个实例存在,这就叫做单例模式.省内存.
  • 一个url对应一个实例
  • ​​​​​​​​​​​​​​

ServletAPI查询地址

  • http://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html​​​​​​​
  • Web应用常见的错误

404找不到请求的资源

​​​​​​​

500代表服务器内部错误

  • protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  • // TODO Auto-generated method stub
  • System.out.println("doGet()");
  • int i=1/0;
  • response.getWriter().append("Served at: Hello Servlet!").append(request.getContextPath());
  • }

 ​​​​​​​页面无法显示:未启动Tomcat

​​​​​​​设置响应编码:UTF-8

  • response.setContentType(“text/html;charset=UTF-8”);
  • 向页面输出

  • out=response.getWriter();
  • out.println(内容);
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号