Servlet

server applet,小服务程序/服务连接器,用Java编写的运行于服务器的程序,具有独立于平台和协议的特性,功能是交互式的浏览和生成数据,生成动态页面。

Servlet生命周期

实现过程
1.客户端向服务器发送请求
2.服务器初始化一个servlet,创建一个servlet实例
3.将客户端请求交由servlet处理
4.处理结果返回给服务器,服务器再发送客户端

生命周期

  1. 第一个HTTP请求委派到servlet容器
  2. servlet容器在调用service()之前加载servlet到内存
  3. 实例化init()一个实例对象
  4. service()根据请求调用不同方法doGet/doPost,回应请求生成动态页面返给服务器
  5. server关闭时调用servlet的destroy()回收资源。

server只初始化一次servlet实例,当服务器处理多个响应时,servlet容器启动多个线程调用service()方法。
因此,和OGI相比,具有以下优点

  1. 开销小
  2. 响应快
  3. 可移植性好(Java编写)
  4. 功能强大

与JSP不同
JSP是servlet更完善的版本,换句话,servlet并不是完美的,servlet注重于business layer,而没有将presentation layer层分离开来,两层混杂。JSP虽然没有完成servlet不能完成的功能,但JSP将两层分离开来,和PHP,ASP一样属于镶套型,可以镶套在HTML中,同时JSP又引入Java bean,这样jsp中就可以只包含presentation layer的内容,将business layer交由Javabean处理,然后JSP通过调用实现两层融合。
这样的好处就是,当发生大量用户点击时,能够提高效率,纯script很容易达到功能上线。
所以说,先从servlet入手,在学习JSP,最后JavaBean。

Tomcat, Jetty, resin, Oracle Application server, WebLogic Server, Glassfish, Websphere, JBoss 等等。(提供了 Servlet 功能的服务器,叫做 Servlet 容器。对 web 程序来说,Servlet 容器的作用就相当于桌面程序里操作系统的作用,都是提供一些编程基础设施)

那么,为什么还用 JSP+BEAN?因为 Java 实在前途远大。操作系统群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,Java 一统天下的时机就到了。
简单分析了一下 JSP 和 Servlet 的区别和 Java Web 开发方面的发展。随着机器速度越来越快,Java 的速度劣势很快就可以被克服。

Servlet创建

Servlet API有两个包javax.servlet和javax.servlet.http
一般直接从javax.servlet.GenericServlt和javax.servlet.http.httpservlet继承创建一个自己的servlet类
然后再去web.xml里配置,再web.xml里注册和映射需要两个标签和,如下:

<servlet>  
 <!-- 当前servlet的名称 -->  
 <servlet-name>HelloServlet</servlet-name>  
  <!-- servlet所在的包名跟类名 -->  
 <servlet-class>com.helloservlet.hello.HelloWorldServlet</servlet-class>  
 </servlet>  
 <servlet-mapping>  
 <!-- 必须于上一个servlet标签中的名称保持一致 -->  
 <servlet-name>HelloServlet</servlet-name>  
 <!-- 这是你在浏览器上访问的地址,必须要提 /servlet/xxxx 格式,不然tomcat启动会报错-->  
 <url-pattern>/servlet/helloWorld</url-pattern>  
 </servlet-mapping>

JSP初始

JSP
Java server page,servlet的简化版,将表示和处理分开。在HTML插入代码。

实现原理
JSP的所有处理都在服务器端进行,在接到客户端请求后,根据request内容处理,或者根据实际需要将Request对象转发给由JSP文件所指定的其他的服务器端组件(如Servlet组件、JavaBean组件或EJB组件等)进行处理,得出的结果返回给客户端

运行机制
JSP-----翻译-------servelt(.java)------编译--------.class--------执行-------结果

语法
分为三种类型:
脚本语法:<%%>
编译器指令<%page import=" java.io.*"%>
动作语法<%jsp:include %> ,<%jsp: forword%>

脚本语法

  1. HTML注释<!-- -->
  2. JSP注释<%-- --%>
  3. 声明<%! 生明;%>声明只在本页有效,在声明时赋值,临时变量。
  4. 表达式
  5. 代码段

编译器指令
包含在<%@%>里
页面环境,配置。作用整个页面,也作用静态包含
page指令,不唯一
在这里插入图片描述
在这里插入图片描述

include指令
向当前页面静态插入一段HTML或JSP,会在JSP被解释为servlet时,引入被插入的片段,是一种静态包含,所谓静态包含:就是在解释为servlet之前把包含进来的文件一起整合为一个文件解释转换为一个servlet文件。

<%@include file=“url(相对)”%>

taglib指令
引入定制标签

动作语法
<jsp:include>:动态包含,和静态包含不同,动态包含是将包含页面的处理后的结果包含进来。
语法格式:

<jsp:include="{relativeURL|<%=expression%>}">
<jsp:param name="parameterName" value="{parameterValue|<%= expression %>}" />
 [<jsp:param …/>]
</jsp:include>

<jsp:forword>:跳转一个动态页面,并可以向该页面传递含有用户请求的参request对象,用户无需点击鼠标,Java代码块控制跳转,地址栏地址不会改变。

<jsp:forward page={"relativeURL" | "<%= expression %>"} >
 <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />
  [<jsp:param … />]
   </jsp:forward>

内置对象
大小写敏感,都由Java类生成,在服务器上根据情况自动生成

  1. session
  2. application
  3. request
  4. response
  5. out
  6. pageContest
  7. config
  8. page
  9. exception

表单确认
客户端确认,JS
响应快,减小服务器负担。兼容差

服务器端确认,JavaBean JSP
开销大,兼容性强,统一确认

JavaBean
是一个跨平台且可重复使用的软件组件。
特点:

  1. 都是public
  2. 有一个不带参数的构造方法
  3. 通过set设置属性,get获取属性。
    引用JavaBean:<jsp:useBean id="" class=""/>
    id指定Bean的对象名。class指定Bean的完成包名,说明了类型。
    设置属性:<jsp:setProperty property="" name="" value="" param=""/>

<jps:setProperty name = “JavaBean实例名” property = “*”/>
<jsp:setProperty name = “JavaBean实例名” property = “JavaBean属性名” />
<jsp:setProperty name = “JavaBean实例名” property = “JavaBean属性名” value = “BeanValue”/>
<jsp:setProperty name = “JavaBean实例名” property = “propertyName” param = “request对象中的参数名”/>

name是Bean实例名,property是属性名,value是该属性的值。
value不可和param同时使用

获取属性值:<jsp:getProperty property="" name=""/>

总结
Integer类常用方法

  1. .ParseInt(String s)方法(将基本类型转换成字符串。)
  2. .toString(int i)
  3. .任何类型+"" 变成String类型(推荐使用)基本数据类型int转换成字符串