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种基本内置组件
1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。
2、response对象 响应客户请求的有关信息
3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个 WebApplication开始,直到客户端与服务 器断开连接为止。
4、out对象, 它是JspWriter类的实例,是向客户端输出内容常用的对象
5、page对象, 它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例
6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭
7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问
9、config对象 它是在一个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)%>">