有关servlet与jsp的简答整理

本文详细介绍了Servlet的注册方法、两种跳转方式及其区别,包括原理、参数传递、处理方式等。同时,解析了JSP的执行过程,解释了如何避免自动生成session对象及内置对象的作用。还涵盖了Servlet的生命周期,JDBC-ODBC桥的数据库查询步骤,以及Cookie管理和Servlet主要功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在程序里怎样注册servlet

web.xml中

<servlet>

    <servlet-name>Hello</servlet-name>这里是servlet的名字

    <servlet-class>com.nwu.lch.Hello</servlet-class>这里写servlet类在的包路径

  </servlet>

  <servlet-mapping>这里是地址映射

    <servlet-name>Hello</servlet-name>这个和上面的同名

    <url-pattern>/Hello</url-pattern>这里写servlet映射地址

  </servlet-mapping>

2.servlet两种跳转页面的方式分别是什么?有什么区别?

服务端跳转: 

request.getRequestDispatcher(XXXXX).forward(request,response);

客户端跳转: response.sendRedirect(“XXXXX”);

注:其中XXXXX是你要跳转到的jsp页面地址或者servlet的地址】

(1)跳转的原理不同:

第一种跳转方式是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变

第二种跳转方式是通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容,所以这种方式可以重定向到任何URL,且重定向后浏览器URL变成定向后的页面地址

 

(2)参数传递不同:

第一种跳转方式传递参数可以通过session、request以及在url中携带参数的三种方式来实现。其参数传递过程大致为:服务器在向客户端发送数据之前,先将数据输出到缓冲区,然后将缓冲区中数据发送给client端。什么时候将缓冲区里的数据发送给client端呢?①当对来自client的request处理完,并把所有数据输出到缓冲区;②当缓冲区满;③在程序中调用缓冲区的输出方法out.flush()或response.flushbuffer(),web container才将缓冲区中的数据发送给client。

第二种跳转方式传递参数的方式只可以通过session和url中携带参数两种方式实现,跳转到下一个页面后,无法再获取又上一个页面request对象中的数据,即无法使用request.setAttribute来传递参数

 

(3)对跳转语句后面的代码的处理方式不同:

重定向跳转方式是服务器端跳转,是强制跳转,不执行其后的代码

请求转发跳转方式中,当程序执行到此句时,是所有代码执行完成后再执行跳转动作,也就是说其后的代码有被执行的机会。但是这里要分两种情况进行讨论:如果要跳到不同主机,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义; 如果要跳到相同主机,此语句后面的语句执行完成后才会跳转。

 

(4)跳转路径不同:

第一种跳转方式request.getDispatcher(“/XXXXX”).forward(request,response); 转向web项目的根路径如:”http://localhost:8080/projectName/“,所以不带Web项目名称

第二种跳转方式response.sendRedirect(“/projectName/XXXXX”); 转向web服务器的根路径如:“http://localhost:8080/”,所以要带Web项目名称

3.简述JSP的执行过程?


第一次请求:

当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个.java文件,也就是servlet,并编译这个java文件生成.class的字节码文件,然后执行字节码文件响应客户端的请求。

再次请求:

JSP引擎将直接执行字节码文件来响应客户。 

 

4.如何避免JSP页面自动生成session对象?为什么要这么做?

  1)可以使用页面指令显式关掉,代码如下:

    <%@ page session="false" %>

  2)在默认情况下,用户请求一个jsp页面时,如果session还没有建立,jsp页面会自动建立一个session对象,但是session对象是比较消耗资源的,如果没必要保持和使用session,就不应该创建,比如宣传产品的网站

 

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

JSP共有以下9种基本内置组件 

1request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。 

       2response对象 响应客户请求的有关信息

3session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个 WebApplication开始,直到客户端与服务       器断开连接为止。

       4out对象,   它是JspWriter类的实例,是向客户端输出内容常用的对象

5page对象,   它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例

6application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭 

7exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。

       8pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问

       9config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的

 

6.说一说Servlet的生命周期?

   init(ServletConfig config)    初始化
   service() 处理客户的请求和响应
   destroy() 销毁

 

7.JSP页面是如何被执行的?JSP执行效率比Servlet低吗?

当客户端向一个JSP页面发出请求时,Web Container将JSP转化成Servlet的源代码(只在第一次请求时),然后编译转化后的Servlet并加载到内存中执行,执行的结果Response到客户端。
JSP只在第一次执行的时候会转化为Servlet,以后每次执行Web容器都是直接执行编译后的Servlet,所以JSP和Servlet只是在第一次执行的时候不一样,JSP慢一点,以后的执行都是相同的。

 

8.如何设置cookie在某一时间后过期?

cookie过期时间设置方式:

cookie.setMaxAge(0);//不记录cookie

cookie.setMaxAge(-1);//会话级cookie,关闭浏览器失效

cookie.setMaxAge(60*60);//过期时间为1小时

 

9.使用JDBC-ODBC桥实现数据库查询操作的大致步骤是什么?

    加载驱动程序 Class.forName(driver);

    建立连接 Connection con = DriverManager.getConnection(url);

    创建语句对象 Statement stmt = con.createStatement();

    执行查询语句 ResultSet rs = stmt.executeQuery(sql);

    查询处理对象及关闭结果集对象 rs.close();

    关闭语句对象 stmt.close();

关闭连接 con.close()

 

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

1)提交的form     method=Post就执行DOPOST,否则执行GOGET 套用是不管method是post还是get都执行dopost方法

 

2)get:你可以通过URL传参数。http://www.youkuaiyun.com/index.asp?user=1234 , Post不行

 

3)你的表单提交都有方法的,如果提交为get就调用get方法,用post就调用post方法.      get显示你传过去的参数,post则不显示.

 

4)通常的写法:先用doGet(),然后在doPost()中调用doGet(),这样就万无一失了,当然也可以反过来调用。

 

 5)简单的说,get是通过http     header来传输数据,有数量限制,而post则是通过http     body来传输数据,没有数量限制。

 

 6)还有一点:get和post提交的数据量是不一样的.     get最多只能在url后跟255个字符   post没这个限制

 

 7)还有url刷新时get好像可以不用重复提交原来提交的数据,      而post则会说内容已提交,想刷新请再提交

11. Java Servlet的主要功能和作用是什么?

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet ,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet 。装入后, Servlet 继续运行直到其它客户机发出请求。 Servlet 的功能涉及范围很广。例如, Servlet 可完成如下功能:
(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。
(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。
(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如, Servlet 可
以是多参与者的游戏服务器。
(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet 的新连接,并将该连
接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。
(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。
(7) 将定制的处理提供给所有服务器的标准例行程序。例如, Servlet 可以修改如何认证用户。

12.JSP中如何删除一个COOKIE?

<%
        Cookie cook=new Cookie("name","jalon");
        cook.setMaxAge(0);//设置有效时长为0;
        response.addCookie(cook);
    %>

 

 

13.Servlet执行时一般实现哪几个方法?

public void init(ServletConfig config) 
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

 

14.如果jsp表单元素的值为空,如何避免null出现在页面上?

  1) 可以写一个函数来判断,若为空,就返回"",代码如下:

    {%!

        String isNull(String str)

        {

            return (str==NULL)?(""):str;

        }            

    %}

    2) 然后下面是调用函数,代码如下:

    <input type="text" value="<%=isNULL(name)%>">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值