servlet和JSP

servlet

Servlet 是一种独立于平台和协议的服务器端的 Java 技术,可以用来生成动态的 Web 页面。与传统的 CGI(计算机图形接口)和许多其他类似 CGI 技术相比,Servlet 具有更好的可移植性、更强大的功能,更少的投资,更高的效率,更好的安全性等特点。

Servlet 是使用 Java Servlet 应用程序接口(API)及相关类和方法的 Java 程序。Java 语言能够实现的功能,Servlet 基本上都能实现(除了图形界面之外)。

Servlet 主要用于处理客户端传来的 Http 请求,并返回一个响应。通常所说的 Servlet 就是指 HttpServlet,用于处理 Http 请求,其能够处理的请求有 doGet()、doPost()、service()等方法。在开发 Servlet 时,可以直接继承 javax.servlet.http.HttpServlet。

Servlet 需要在 web.xml 中进行描述,例如:映射执行 Servlet 的名字,配置 Servlet 类、初始化参数,进行安全配置、URL 映射和设置启动的优先权等。Servlet 不仅可以生成 HTML 脚本输出,也可以生成二进制表单输出。

Servlet 应用范围很广泛,我们现在用的很多流行的框架技术,其最基本的代码离不开 Servelt 的支持。比如我所熟悉的 SSH 框架,Spring 容器启动时,要在 web.xml 中装载 Spring 容器的 ActionContext 类来初始化 Spring 的一些参数,如进行依赖注入、数据库表的映射、初始化系统的安全配置设置 read 等属性等一些相关操作。

Servlet 的生命周期

servlet 有良好的生存期的定义,包括加载实例化初始化处理请求以及服务结束

这个生存期由 javax.servlet.Servlet 接口的 init,service destroy 方法表达。

Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。

web 容器加载 servlet,生命周期开始。

 

Servlet 的基本架构

package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{}

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}

}

 

Servlet 中 API 中 forward()与 redirect()的区别?

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用 sendRedirect()方法。

什么情况下调用 doGet()和 doPost()?

Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

HTTP 请求的 GET 与 POST 方式的区别

Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。二者主要区别如下:

1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据;

2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL;

3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说都是不可见的;

4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post;

5)Get 限制 Form 表单的数据集必须为 ASCII 字符,而 Post 支持整个 ISO10646 字符集;

6)Get 是 Form 的默认方法。

 

HttpSession 的作用、使用方法,可用代码说明。

HttpSession 中可以跟踪并储存用户信息,把值设置到属性中,

有 2 个方法:setAttribute(),   getAttrribute();

例如:在一个方法中用 session.setAttribute(“student”,student);在 session 中设置一个属性名为student,值为一个名为 student 的对象。而后可在同一 session 范围内用 getAttribute(“student”) 取出该属性,得到 student 对象。

Cookie与session的区别:

Cookie:存储在客户端 ;;两种类型 ;;父路径不能访问子路径的 cookie ;;不可靠 ;;3 个月不用再登陆;

session:存储在服务器端;;两种实现方式;;同一个 session 的窗口共享一个 session;;可靠;;用户登陆

request.getAttribute() 和 request.getParameter() 有何区别?

当你要传递普通的数据类型给下一个页面时,你在下一个页面中就可以用 getParameter()方法来获得上一个页面传递过来的数据了!(普通的数据类型是指 int,float,double,string 等在 Java 中常用的基本类型,但是在下一个页面中你用 getParameter()方法获得的值永远只能时 String 类型的,你可以把 String 类型转换为你所需要的类型!)

当你要传递一个对象给下一个页面时,你就要使用 getAttribut()方法了!如:你要把一个 List或Map 传递到下一个页面,这时你就必须要用 setAttribut()和 getAttribut()方法传递数据了!从更深层次的考虑,getParameter()方法传递数据,只会从 WEB 客户端传递到 WEB 服务器,代表 HTTP 请求数据,getParameter()方法返回 String 类型的数据!setAttribut()和 getAttribut()

方法传递的数据只会在 WEB 服务器内部,在具有转发关系的 WEB 组件之间传递,这两个方法能设置 Object 类型的共享数据!

JSP:

jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?

JSP 共有以下 9 个内置的对象:

request 用户端请求,此请求会包含来自 GET/POST 请求的参数

response 网页传回用户端的回应

pageContext  网页的属性是在这里管理

session 与请求有关的会话期

application servlet  正在执行的内容

out 用来传送回应的输出

config servlet 的构架部件

page JSP 网页本身

exception  针对错误网页,未捕捉的例外

 

request:表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header, 和 session 数据的有用的方法。

response:表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等)

out:对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

pageContext:表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。

session:表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息

applicaton :表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和 servlet 环境的信息

config:表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。

page:表示从该页面产生的一个 servlet 实例

在 JSP 中使用 JavaBean 常用的动作有:

1)<jsp:useBean />:用来创建和查找 bean 对象;

2)<jsp:setProperty />:用来设置 bean 的属性,即调用其 setXxx()方法;

3)<jsp:getProperty />:用来获得 bean 的属性,即调用其 getXxx()方法。

jsp 的四种范围:

a.page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面

b.request 是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)

c.session 是代表与用于某个 Web 客户机的一个用户体验相关对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求

d.application 是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

过滤器有哪些作用:***7个

可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。

过滤器的用法?(对客户端的请求统一编码和对客户端进行认证)

首先要实现(implements)Filter 接口,同时覆盖 Filter 接口的三个方法:

init(FilterConfig config) //用于获得 FilterConfig 对象;

doFilter(ServletRequest request, ServletResponse response, FilterChain chain) //进行过滤处理一些业务;

destroy() //销毁 Filter。

JSP  Servlet 有哪些相同点和不同点,他们之间的联系是什么?

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑

 

猜你喜欢

转载自blog.csdn.net/qq_39667655/article/details/82083982
今日推荐