`

JSP Servlet基础知识(一)

阅读更多

下一页»

1.    HTML 是静态的,JSP是动态的,交互式的,而且可由用户定制。

 

2.    服务器:可能是物理主机(硬件),也可能是Web服务器应用(软件)。

客户:指人类用户,或浏览器应用。

Web客户允许用户请求服务器上的某个资源,并且向用户显示请求结果。

 

3.    服务器和客户的通信

服务器和客户之间对话的共同的语言是HTTP

服务器使用HTTP向客户发送信息。

4.    HTTP

请求:HTTP方法(GetPost),要访问的页面,表单参数。

响应:状态码,内容类型(文本、图片、HTML等),内容(具体的HTML、图片等)。

 

5.    HTTP请求:Get请求和Post请求

Get请求:资源的路径URL以及所有参数都会包括在请求行中。

    请求行:  GET /select/selectBeer.jsp?color=dark&taste=malty HTTP/1.1

    请求首部:Host: www.wickedlysmart.com

             User-Agent: Mozilla/5.0……

             Accept: text/htmlapplication/xmlapplication./xhtml+xml

text/html;q=0.9

             Accept-Language: en-us en;q=0.5

             Accept-Encoding: gizpdeflate

              Accept-Charset: ISO-8859-1utf;q=0.7*;q=0.7

             Keep-Alive:300

             Connection: keep-alive

    GET请求,没有体,参数只能放在请求行中,并且会显示在浏览器的输入地址中,不够安全。

POST请求:又称为“消息体”或“有效负载”,放在消息体中,长度不受限制。

    请求行:POST /advisor/selectBeer.do HTTP/1.1

    请求首部:同上

    消息体:(空行)color=dark&taste=malty

    简单的超链接默认是GET方法,如:<a href=”http://www.baidu.com”>link</a>

    Form表单默认也是GET方法。

    GETHEADPUT是幂等的(注:GETdoGet()不同,GET方法是HTTP的,doGet()Servlet)POST不是幂等的。

 

6.    HTTP响应

包括响应首部和体

首部告诉浏览器使用的协议,请求是否成功,以及体中放入内容是什么类型

    HTTP/1.1 200 OK

    Set-Cookie: jsessionID=adfiifeeni23499v99wernnwerr; Pat=/testEL

    Content-Type: text/html(内容类型响应首部的值称为MIME类型,MIME类型告诉浏览器要接受的数据是什么类型,其值与HTTP请求首部中的Accept所列的值相关)

    Content-Length:397

    Date: Wed 19 Nov 2003 03:25:40 GMT

    Server: Apache-Coyote/1.1

    Connection: close

体中包含了让浏览器显示的具体内容:

    (空行)

     <html>……</html>

 

7.    URL(Uniform Resource Locators)

http://www.smart.com:80/beeradvice/select/beer1.html

协议        服务器     端口          路径          资源

FTP的端口是 31Telnet23SMTP25Time37POP3110HTTPS443

 

8.    Web服务器不做的两件事情

a)      动态内容。Web服务器应用只提供静态页面,动态内容由Web服务器辅助应用(CGI)来完成。

b)      在服务器上保存数据。Web服务器把这些功能转给辅助应用进行处理。

 

9.    Web容器

 

Web服务器(Apache)得到一个指向servlet的请求,服务器不是把这个请求直接交给servlet本身,而是交给Web容器(Tomcat),由Web容器调用servlet

Web容器管理和运行servlet,容器知道自己与Web服务器之间的协议,Web容器控制者servlet的生命周期,容器会自动地为它接收每个servlet请求并创建一个新的线程,Web容器负责把JSP代发翻译成真正的Java代码。

利用配置文件(web.xml)将servlet部署到容器

一个完全兼容的J2EE应用服务器必须有一个Web容器和一个EJB容器

 

Tomcat是一个Web容器,而不是一个完整的j2ee应用服务器,因为Tomcat没有EJB容器。

 

 

 

10.    JSP-Servlet执行流程

    1) 浏览器把请求数据发送给容器

    2) 容器根据URL找到正确的Servlet,并把请求传递给这个Servlet

    3) Servlet调用辅助应用寻求帮助

    4) 这个辅助应用返回一个回答,Servlet把这个回答增加到请求对象

    5) Servlet把请求转发给JSP

    6) JSP 从请求对象得到回答

    7) JSP为容器生成一个页面

    8) 容器把这个页面返回给客户

 

 

 

 

11.    Servlet的生命周期

 

12.    Servlet的属性和参数

a)      属性

有三种类型的属性,应用上下文(ServletContext)、请求(HttpRequest)和会话(HttpSession)

设置方法: setAttribute(String name,Object value)

获取方法:getAttribute(String name), 返回类型是Object

上下文(ServletContext)属性不是线程安全的,因为每个Servlet都可以访问。让上下文属性线程安全的做法:

同步服务器方法(即对doGet()doPost()方法添加synchronized)

同步服务器方法意味着servlet中一次只能运行一个线程,但是并不能阻止其它servletJSP访问这个属性。

同步上下文( synchronized(getServletContext()))

synchronized(getServletContext()){

               getServletContext().setAttribute("foo", "22");

               getServletContext().setAttribute("bar", "42");

}

会话属性:通常,一个客户同时只有一个请求,就算多个servlet能在单独的线程中访问会话属性,每个线程都是单独的请求,所以,这时会话属性是线程安全的。但是一个用户同时有多个请求时(用户同时打开多个浏览器去访问),会话属性是非线程安全的,通过同步HttpSession来达到线程安全。代码如下:

           HttpSession session=request.getSession();

           synchronized(session){

               session.setAttribute("foo", "22");

               session.setAttribute("bar", "42");

    }

b)      参数

应用上下文初始化参数、请求参数、servlet初始化参数

设置方法:servlet初始化参数只能在DD中设置

获取方法:getInitParameter(String name)

 

13.    Servlet接受提交的参数

a)      接受单个参数

String username=request.getParameter(“username”);

b)      接受多个参数

String [] parameters=request.getParameterValues(“sizes”);//sizes可以看做是表单中的复选框,如:

            <form action=”**.do”>

<intput type=checkbox name=sizes value=”1”>1

<intput type=checkbox name=sizes value=”2”>2

<intput type=checkbox name=sizes value=”3”>3

<input type=”submit”>

</from>

 

14.    ServletConfigServletContext

a)      ServletConfig对象

每个servlet都有一个ServletConfig对象,用于向servlet传递部署信息。

servlet初始化之前不能使用servlet初始化参数。

ServletConfig构建过程如下:

1)      容器读取当前servletDD(web.xml),包括servlet初始化参数(<init-param>)

2)      容器为这个servlet创建(new)一个新的ServletConfig实例

3)      容器为这个servlet初始化参数创建一个String /值对

4)      容器向ServletConfig提供名/值初始化参数的引用

5)      容器创建(new)serlvet类的实例

6)      容器调用servletinit()方法,传入ServletConfig的引用

容器初始化一个servlet时,会为这个servlet创建一个唯一的ServletConfig,容器从DD中读出servlet初始化参数,并把这些参数交给ServletConfig,然后把ServletConfig传递给servletinit()方法。

初始化参数:在web.xml配置文件中的<servlet>标签中

                   <init-param>

                      <param-name>adminEmail</param-name>

                      <param-value>zzq_rj@163.com</param-value>

        </init-param>

       servlet中调用:getServletConfig().getInitParameter(“adminEmail”);

b)      ServletContext对象

每个Web应用才有一个ServletContext,用于访问Web应用参数。Web应用中的各个servletJSP都能访问ServletContext

初始化参数:在web.xml配置文件中的<web-app>标签中<servlet>标签外

                  <context-param>

                      <param-name>contextname1</param-name>

                      <param-value>contextvalue1</param-value>

           </context-param>

servlet中调用:getServletContext().getInitParameter(“adminEmail”);

           或者   ServletContext context=getServletContext();

                context.getInitParameter(“adminEmail”);

JSP中调用:

 

15.    使用响应

通常,使用响应只是向客户发回数据,会调用两个方法:setContentType()getWriter()。当然,还可以使用响应设置其它首部、发送错误以及增加cookie

response.setContentType(“application/jar”);

完成I/O

ServletContext ctx=getServletContext();

InputStream is=ctx.getResourceAsStream(“/book.jar”);//必须以“/”开头,表示Web应用的根。

两种输出方式

字符形式:PrintWriter writer=response.getWriter();

         writer.println(“some text and HTML”);

字节流形式: ServletOutputStream out=response.getOutputStream();

            out.write(aByteArray);

下一页>> 

  • 大小: 24.3 KB
  • 大小: 14.4 KB
  • 大小: 20.5 KB
  • 大小: 24.1 KB
分享到:
评论

相关推荐

    白色大气风格的建筑商业网站模板下载.rar

    白色大气风格的建筑商业网站模板下载.rar

    面向对象编程语言Objective-C基础语法详解及应用

    内容概要:本文详细介绍了面向对象编程语言Objective-C的基础语法,包括其历史背景、特点、环境搭建、基本语法、面向对象编程、高级特性和实际应用。具体涵盖的内容包括Objective-C的历史发展、面向对象编程的核心特性、变量和数据类型、控制结构、函数、数组和字典的使用,以及类、对象、属性和方法的定义与使用。此外,还介绍了高级特性如协议和委托、类别和扩展、ARC、块和GCD。最后,通过示例项目展示了如何在Xcode中创建和调试Objective-C程序,以及如何使用Cocoa和Cocoa Touch框架。 适合人群:具备一定的编程基础,希望学习或深入了解Objective-C编程的开发人员。 使用场景及目标:适用于需要开发macOS和iOS应用的开发者,帮助他们掌握Objective-C的基本语法和高级特性,提高编程效率和代码质量。 其他说明:本文不仅提供了详细的理论讲解,还通过实际代码示例展示了如何在Xcode中创建和调试Objective-C项目,适合初级到中级水平的开发人员学习和参考。

    球馆预约系统ssm.zip

    本次开发的微信小程球馆预约系统,有管理员,用户两个角色。管理员功能有个人中心,用户管理,场地类型管理,球馆信息管理,球馆预约管理,系统管理。用户可以在微信小程序上面注册登录,查看球馆信息,对球馆进行预约操作。 开发本程序后台用到了SSM开发技术,微信端用的是uni-app技术。数据库采用关系数据库市场占有率最高的MySQL作为本程序使用的数据库,完全符合程序使用并且有丰富的拓展余地。 用户在微信小程序注册登录后可以看到首页,首页可以搜索球馆名称,也可以查看球馆资讯,下面是导航栏。 用户点击球馆信息可以进行预约,预约需要输入相关时间等信息。 我的里面可以修改个人信息,可以退出,还可以查看球馆预约信息和我的收藏信息。

    STM32F030单片机串口2发送接收.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。

    廖鹏盛 - 时代进行曲.zip

    廖鹏盛 - 时代进行曲.zip

    白色大气风格的人体艺术摄影网站模板下载.zip

    白色大气风格的人体艺术摄影网站模板下载.zip

    白色大气风格的服装设计师模板下载.zip

    白色大气风格的服装设计师模板下载.zip

    白色大气风格的景观设计HTML网站模板.zip

    白色大气风格的景观设计HTML网站模板.zip

    (176226648)机器学习领域,基于TensorFlow与mnist数据集,实现手写数字识别,手写数字识别,机器学习学习首选项目

    优质的机器学习资源是当今科技领域的热点,其中TensorFlow作为谷歌公司的开源库,成为最受欢迎的深度学习框架之一,广泛应用于各类项目中。TensorFlow提供了丰富的功能和灵活性,使得开发者可以轻松构建和训练复杂的神经网络模型,处理图像、文本和其他类型的数据。由于其开源性质,拥有庞大的社区支持,用户可以放心使用,并从开源社区中获取宝贵的经验和资源。 mnist数据集是机器学习领域的经典数据集之一。它包含着大量的手写数字图像,供开发者用来训练和测试各种算法和模型。这个数据集的规模相对较小,因此对于绝大多数人来说,无论是数据的下载还是训练过程,都不会对电脑性能提出过高的要求。这使得mnist成为了理想的入门数据集,适合初学者探索和理解机器学习算法的基本原理。 结合Pygame与TensorFlow,你将能够为机器学习实验创建出图形化界面,以及实现交互式处理。Pygame是一款面向游戏和多媒体应用的Python库,但同样也可以用于数据可视化和图形化交互。利用Pygame,你可以展示训练过程中的图像输出、模型的预测结果等,增强对机器学习算法运行情况的直观认识。而且,Pygame的简单。内

    基于两种坐标系的超螺旋滑模观测器的永磁同步电机pmsm无位置(速度)传感器控制模型 支持 dq旋转坐标系和静止坐标系建立smo 引入二阶滑模超螺旋算法替代一阶滑模 dq坐标系引入锁相环PLL估计转速及

    基于两种坐标系的超螺旋滑模观测器的永磁同步电机pmsm无位置(速度)传感器控制模型 支持 dq旋转坐标系和静止坐标系建立smo 引入二阶滑模超螺旋算法替代一阶滑模 dq坐标系引入锁相环PLL估计转速及转子位置 有效削弱抖振 赠送超螺旋滑模搭建推导文档及相关参考资料 仿真模型

    汇编实验算数运算程序设计.docx

    汇编实验算数运算程序设计.docx

    小区监控视频监控方案.doc

    小区监控视频监控方案.doc

    白色大气风格的HTML商务模板下载.zip

    白色大气风格的HTML商务模板下载.zip

    白色大气风格响应式运动健身瑜伽企业网站模板.zip

    白色大气风格响应式运动健身瑜伽企业网站模板.zip

    单片机实验仿真设计报告

    单片机实验仿真设计报告

    白色大气风格的设计公司整站网站模板下载.zip

    白色大气风格的设计公司整站网站模板下载.zip

    白色大气风格的html商务模板.zip

    白色大气风格的html商务模板.zip

    白色大气风格的英文网站模板下载.zip

    白色大气风格的英文网站模板下载.zip

    白色大气风格的科研教育模板下载.zip

    白色大气风格的科研教育模板下载.zip

    stm32驱动摄像头ov7670源程序

    本摄像头ov7670驱动程序已经通过本人的验证可以正常运行,不同的stm32开发板只需要修改引脚即可使用

Global site tag (gtag.js) - Google Analytics