JavaWeb复习题解析

目录

单选题

填空题

判断题

解答题(解答题部分基本是没解析了,属于没理解也要硬记的部分了)

1.简述可以用在JSP页面的几种注释

2.简述JSP页面可以包含哪些元素

3.简述JSP的指令标签

4.简述JSP的动作标签

5.简述静态包含include与动态包含include的区别

6.简述JSP的常用内置对象

7.简述form表单中method属性的值get和post的区别

8.简述转发请求forward与重定向sendRedirect的区别

9.简述cookie与session的区别

10.简述Javabean规范都有哪些?

11.JSP Model2架构模型采用了什么技术,各项技术对应MVC的哪一模块,作用是什么。

12.简述Servlet接口中,init方法、service方法、destroy方法的作用。

13.简述使用PreparedStatement执行sql命令的好处。

14.简述请求转发与重定向的区别

15.简述JSP隐式对象request、response、exception和out对象的作用。

16.MVC模式由以下三个核心组件组成:

17.JDBC(Java Database Connectivity)是Java语言用于与关系型数据库进行交互的API(应用程序接口)标准。它提供了一组用于连接、查询和更新数据库的方法和类。


单选题

1.关于 B/S与 C/S模式的介绍正确的是( )。

AB/S是浏览器/服务器模式,服务器装好后,用浏览器就可以正常浏览

BC/S是客户端/服务端模式,服务器装好后,用浏览器就可以正常浏览

CB/S是浏览器/服务器模式,服务器装好后,其他人还需要在客户端的计算机上安 装专用的客户端软件才能正常浏览

DC/S是浏览器/服务器模式,服务器装好后,其他人还需要在客户端的计算机上安 装专用的客户端软件才能正常浏览

正确答案: A 

解析:B/S和C/S咱不必多解释,B就是浏览器,C就是客户端,那直接看题干信息,直接秒选A了,其他选项都是串了的

2.Web开发环境客户端所需具备的技能不包括( )。

AHTML语言

BCSS样式表

CJavaScript脚本语言

DServlet技术

正确答案: D 

解析:注意题干信息,问的是客户端所需具备的技能,也就是前端部分,这三个选项里面,Servlet技术是后端的,所以直接选它

3.Web开发环境服务端所需具备的技能不包括( )。

AJSP

BServlet技术

CJavaScript脚本语言

DJava语言

正确答案: C 

解析:和第二题对比起来,这里是问服务端,也就是后端,这里的JavaScript脚本语言明显是前端的,直接揪出来秒了

4.创建 Web应用程序的步骤正确的是( )。

A创建 Web工程→创建 JSP页面→发布 Web工程→运行 JSP页面

B创建 Web工程→创建 JSP页面→运行 JSP页面→发布 Web工程

C创建 JSP页面→创建 Web工程→发布 Web工程→运行 JSP页面

D创建 JSP页面→创建 Web工程→运行 JSP页面→发布 Web工程

正确答案: A 

解析:创建Web应用程序的步骤简单一点记就是,1.创建整个Web工程,也就是你的idea新建一个Web项目呗;2.创建JSP界面,就是在你目录里面右键新建呗;3.发布Web工程,讲简单点就是把你的tomcat配置好启动;4.运行jsp界面,这个不用解释了吧

5.关于 JSP页面中嵌入 Java代码的描述正确的是( )。

AJSP页面只能嵌入 HTML代码,不能嵌入 Java代码

BJSP页面中的 Java代码只能嵌入在“<%”与“%>”之间

CJSP页面中的 Java代码只能嵌入在“<#”与“#>”之间

DJSP页面中的任何地方都可以直接写 Java代码

正确答案: B 

解析:常识题,JSP要嵌入Java代码必须用特殊标识符<%%>包裹起来,在这个基础上,任何选项都是错的。

6.关于 HTML语言的描述不正确的是( )。

AHTML是一门用来制作网页的程序语言

BHTML语言是一种标记语言,不需要编译,直接由浏览器执行

CHTML语言大小写敏感,HTML与 html是不一样的

DHTML文件必须使用 html或 htm为文件名后缀

正确答案: C 

解析:

A、不用解释

B、你猜为什么HTML叫超文本标记语言,

D、html是htm的拓展,本质上是一个东西,所以D是正确的

C、html的的语法并没有那么严格,大小写几乎不会有影响,这也是为什么很多人会调侃html不配称为编程语言的原因。

7.关于 JavaScript的描述不正确的是( )。

A与 HTML语言一样,无须编译,直接在浏览器中执行

B基于客户端运行,无须服务端

C是一种解释性的,轻量级的,基于对象的语言

D与Java语言一样,需要编译为 class文件后才能执行

正确答案: D 

解析:Javascript,以下称JS了,虽然名称里面有一个Java,但是它跟java的关系并不大,所以并不能和java相提并论,D自然就是错的了;此外,JS经常和HTML写在一起,从某种意义上它们是相近的。所以ABC三个选项都可以推理出来

8.在 helloapp工程中有一个 hello.jsp,它的文件路径 WebContent/hello/hello.jsp,那么在浏览器端访问 hello.jsp的 URL是( )。

Ahttp://localhost:8080/hello.jsp

Bhttp://localhost:8080/helloapp/hello.jsp

Chttp://localhost:8080/helloapp/hello/hello.jsp

Dhttp://localhost:8080/hello/hello.jsp

正确答案: C 

解析:从工程路径角度我们从8080/后开始看,首先工程名helloapp就是第一段目录,AD排除,往下看,jsp文件路径的上一级是hello(你这样想,总不能可能文件路径里面不管它的上一级目录吧,那样怎么可能找得到jsp文件)。综合下来就是C了。

9.JSP页面是在传统的 HTML页面文件中加入 Java程序段和 JSP标签构成的,Java程序段写在( )标记符号之间。

A<% %>           B<- - - ->

C<@ @>           D<& &>

正确答案: A 

解析:前面讲过了,A,露头就秒!

10.JSP指令标签包括 include指令,taglib指令和( )。

Aforward指令       BuseBean指令

Cpage指令          Dparam指令

正确答案: C 

解析:基础知识板块了,指令标签就包括include、taglib、page指令,

  • page 指令:定义 JSP 页面属性。
  • include 指令:用于包含另一个 JSP 文件。
  • taglib 指令:用于引用自定义标签库。

page示例如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

A、forward 并不是 JSP 指令标签。<jsp:forward> 是一个动作标签,用于将请求转发到另一个资源。

B、useBean 也不是 JSP 指令标签。<jsp:useBean> 是一个动作标签,用于在 JSP 页面中创建和初始化 JavaBean。

C、param 不是 JSP 指令标签。它通常用于 JSP 动作标签中的子标签,例如 <jsp:include><jsp:forward>,以传递参数。

11.以下JSP指令标签的书写中,正确的是( )。

A<%!page 属性=!值! %>      B<%@page 属性=!值! %>

C<%#page 属性=! 值! %>     D<%&page 属性=!值! %>

正确答案: B 

解析:前面那一题的示例就是个很好的例子,但是记忆最深刻还是得自己放HTML里面写一遍,而且,哪怕看熟了也会觉得ACD不顺眼吧。

12.page指令标签的属性中可以指定多个值的是( )。

AcontentType属性             Blanguage属性

Cimport属性                   Dsession属性

正确答案: C 

解析:上一篇博客也有谈到这个,import作为导包的属性是可以指定多个值的

 C、import 属性用于导入 Java 类和包,可以指定多个值,使用逗号分隔。示例:

<%@ page import="java.util.*, java.io.*" %>

,此外:

A、contentType 属性用于指定 JSP 页面的 MIME 类型和字符编码,但它不能指定多个值。示例:

<%@ page contentType="text/html; charset=UTF-8" %>

B、language 属性用于指定 JSP 页面的脚本语言,通常是 java,它也不能指定多个值。示例:

<%@ page language="java" %>

D、session 属性用于指定是否为 JSP 页面创建 HttpSession 对象,它的值是 truefalse,不能指定多个值。示例:

<%@ page session="true" %>

13.下面不是 useBean动作可能的属性值的是( )。

AcontentType         Bid

Cscope                Dclass

正确答案: A 

解析:contentType老生常谈了都,放page里面的,跟useBean没关系的

此外:​​​id是指定javaBean的标识符的,scope是指定JavaBean的作用域的(那四个都可以选),class则是指定完整类名的。示例:

<jsp:useBean id="myBean" class="com.example.MyBean" scope="session" />

这三者的关系可以对比出来↑

14.在 JavaEE中,以下有关 jsp:setProperty和 jsp:getProperty标记的描述,正确的是( )。

A和标记都必须在的开始标记和结束标记之间

B这两个标记的 name属性的值必须和标记的 id属性的值相对应

C和标记可以用于对 bean中定义的所有属性进行选择和设置

D这两个标记的 name属性的值可以和标记的 id属性的值不同

正确答案: B 

解析:其实这道题题干信息也有点问题。

A、虽然通常在实际应用中会将它们放在一起,但实际上它们并不必须在 <jsp:useBean> 的标记之间。

C、<jsp:setProperty> 可以用于设置 JavaBean 的属性,但不能选择所有属性。<jsp:getProperty> 只能获取指定的属性。

D、<jsp:setProperty><jsp:getProperty>name 属性值必须与对应的 <jsp:useBean> 标签的 id 属性值相匹配,以确保它们引用的是同一个 JavaBean。所以也是错的

对于B:给你一个示例:

<jsp:useBean id="myBean" class="com.example.MyBean" scope="session" />
<jsp:setProperty name="myBean" property="propertyName" value="value" />
<jsp:getProperty name="myBean" property="propertyName" />

如果上下文的name不同的话肯定是找不到对应值的。

15.在 JSP中如果要导入 java.io.*包,应该使用( )指令。

Apage      Btaglib

Cinclude     Dforward

正确答案: A 

解析:page露头秒了,跟import一起导入,而且是唯一可以导入多个包的操作

16.page指令用于定义 JSP文件中的全局属性,下列关于该指令用法的描述错误的是 ( )。

A<%@page%>作用于整个 JSP页面

B可以在一个页面中使用多个<%@page%>指令

C为增强程序的可读性,建议将<%@page%>指令放在 JSP文件的开头,但不是必需的

D<%@page%>指令中的属性只能出现一次

正确答案: D 

解析:A不用解释了;C:page这个指令在哪都是可以的,但是一边放开头是比较符合大家习惯的

BD之间是对比的,就这样想,page能使用的操作肯定不止一个,import都能多写两行导不同的包呢,所以选D

17.以下( )注释可以被发送到客户端的浏览器。

A<%--第一种 --%>       B<% //第二种 %>

C<% /*第三种 */%>   D<!--第四种-->

正确答案: D 

解析:D就是HTML的常规注释方式,其他都是错的

18.Page指令的( )属性可以设置 JSP页面是否可多线程访问。

Asession                  Bbuffer

CisThreadSafe             Dinfo

正确答案: C 

解析: A、session是指定HttpSession是否创建的,排除;

B、buffer是指定JSP界面输出缓冲区大小的

D、info是提供描述信息的,这些信息可以通过 ServletConfig.getServletInfo() 方法获取。示例:

<%@ page info="This is a sample JSP page" %>

对于C、isThreadSafe 属性用于指定 JSP 页面是否是线程安全的。如果设置为 false,容器会在单线程模式下访问 JSP 页面,以确保线程安全。

19.可在 JSP页面出现该指令的位置处,静态插入一个文件( )。

Apage指令标签          Bpage指令的 import属性

Cinclude指令标签         Dinclude动作标签

正确答案: C 

解析:A:page不用讲了,都说了很多遍是设置JSP界面相关的了

B、import也是,就是引入包的

关于CD,两者虽然都是include,但是D选项的include是动作标签,用于在 JSP 页面请求时动态地包含另一个文件。被包含的文件的内容将在运行时插入;而C选项的include用于在 JSP 页面编译时静态地包含另一个文件。被包含的文件的内容将作为 JSP 页面的组成部分。

这也是它们俩应该区别的地方了

20.Page指令的作用是( )。

A用来定义整个 JSP页面的一些属性和这些属性的值

B用来在 JSP页面内某处嵌入一个文件

C使该 JSP页面动态包含一个文件

D指示 JSP页面加载 Javaplugin

正确答案: A 

解析:A选项已经出现很多次了,懒得讲了

B、应该是include

C、也是include,动作标签的那个

D、指的应该是plugin动作标签,示例:

<%@ page contentType="text/html;charset=UTF-8" import="java.util.*, java.io.*" session="true" buffer="8kb" isThreadSafe="true" %>

21.在 JSP中如果要导入 java.io.*包,应该使用( )指令。

Apage          Btaglib

Cinclude        Dforward

正确答案: A 

解析:懒得讲

22.如果当前 JSP页面出现异常时需要转到一个异常页,需要设置 page指令的( ) 属性。

AException      BisErrorPage

Cerror           DerrorPage

正确答案: D 

解析:A、JSP就没有Exception这个属性

B、这个属性是指定当前 JSP 页面是否是一个错误页面。如果设置为 true,当前页面可以处理由其他 JSP 页面抛出的异常

C、error也不是JSP的属性

D、就是它!!!,用于指定当前 JSP 页面出现异常时需要转到的错误页面。它接受一个 URL 作为值,示例:

<%@ page errorPage="error.jsp" %>

23.在 JSP中的 Java脚本中输出数据时可以使用( )对象的 print()方法。

Apage           Bsession

Cout             Dapplication

正确答案: C 

解析:page可没有输出的功能;session也没有,只是个存东西的容器;application表示整个应用程序范围的上下文,类型为 ServletContext。它用于在整个应用程序范围内共享数据,而不是用来输出数据的。

因此,C为正确答案,示例:

<% out.print("Hello, World!"); %>

24.下列关于 JSTL中条件标签说法错误的是( )。

A可以实现如 if else的条件语句

B标签用于条件选择

C标签代表一个条件分支

D标签代表的最后选择

正确答案: C 

解析:

A、JSTL 中的条件标签 <c:choose>, <c:when>, 和 <c:otherwise> 可以实现类似 if-else 的条件语句。示例:

<c:choose>
    <c:when test="${condition1}">
        <!-- code for condition1 -->
    </c:when>
    <c:when test="${condition2}">
        <!-- code for condition2 -->
    </c:when>
    <c:otherwise>
        <!-- code if no condition is true -->
    </c:otherwise>
</c:choose>

B、如上

D、JSTL 中的 <c:otherwise> 标签用于代表条件选择中的最后选择,相当于 else。,示例如上

C、代表一个条件分支的标签是 <c:when><c:choose> 用于包裹整个条件选择结构,而 <c:when> 用于定义每个条件分支。

25.JSP Model2开发的系统中,实现视图的是( )

AJSP             BHTML

CJavaBean        DServlet

我的答案:A

解析:视图就是V,而JSP 页面负责显示数据,并与用户交互。它们接收由控制器(Servlet)传递的数据并将其呈现给用户。

那肯定就是A了

26.MVC模式中用于负责与用户交互并展示模型中数据的模块是( )

A模型(Model)          B表示层(View)

C视图(View)            D控制器(Controller)

我的答案:C

解析:和上题已经前面一样,mvc的视图就是用来展示的

27.阅读下面的类:
public class Book {
private double price;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
针对以上类,下列说法正确的是( )

A符合JavaBean规范           B不符合JavaBean规范

C没有构造方法,所以不符合JavaBean规范        D以上说法都不对

我的答案:A

解析:javaBean的规范就是属性私有,并且都有get()set()方法;

28.下面关于MVC设计模式的特点描述中,错误的是( )

A有利于开发中的分工             B使程序结构的耦合性增强

C有利于组件的重用               DMVC设计模式是当前主流的设计模式之一

我的答案:B

解析:MVC的出现就是为了减少耦合性的,毕竟耦合性越高越没用呀,减少了各模块之间的相互依赖,才能使得代码更易于维护和扩展。

29.在JSP Model2模型中,接收浏览器请求的是( )

AJSP      BJS     CServlet         DJavaBean

我的答案:C

解析:从JSP(浏览器)传到servlet,再由servlet做后端处理,流程就是这样没话说的。

填空题

1.为了更方便地使用JSP技术,Sun公司为JSP技术提供了两种开发模型:JSP Model1和____。

第一空: JSP Model2

解析:就是JSP+servlet+JavaBean以及MVC两种模型

2.JSP Model1采用____的技术,将页面显示和业务逻辑分开。

第一空: JavaServer Pages(JSP)

解析:这道题就是错误的,我一开始写的时候还有点怪,整个题库的描述前后都不一致

完整的回答应该是:

JSP Model2 采用 MVC 的技术,将页面显示和业务逻辑分开

3.JSP Model2模型就是MVC设计模式,其中控制器的角色是由____实现,视图的角色是由JSP页面实现,模型的角色是由JavaBean实现。

第一空: Servlet

解析:Servlet就是后端处理的部分,作为控制器的角色(C)是再合适不过的,你反正就JSP、javaBean、Servlet这三个选词填空了。

4.MVC设计模式将软件程序分为三个核心模块:模型(Model)、视图(View)和____。

第一空: 控制器(Controller)

解析:老生常谈,秒了

5.____是负责应用程序中处理用户交互的部分。

第一空:控制器(Controller)

解析:秒

判断题

1.JSP Model1架构模型采用JSP+Servlet+JavaBean的技术,实际上它就是MVC设计模式。( )

我的答案:×

解析:model2才是MVC的啦

2.JavaBean需要有一个默认的无参构造方法。( )

我的答案:

解析:考定义的问题,没无参构造方法的话,你将会面临一个麻烦——每次实例bean时都要传设定好的参数,这对于后续常用的反射机制(就是简化创建对象的过程)来讲,是无法成功实例化的。

3.在JSP Model2模型中,控制器的角色是由Servlet实现,视图的角色是由JSP页面实现。( )‘

我的答案:

解析:秒

4.JavaBean中的属性必须私有化。( )

我的答案:

解析:这也是公开get()set()方法的充要条件

5.控制器负责管理应用程序的业务数据、定义访问控制以及修改这些数据的业务规则。( )

我的答案:×

解析:控制器是来接收用户请求和处理业务逻辑的,题干的信息描述的其实是模型的作用。

解答题(解答题部分基本是没解析了,属于没理解也要硬记的部分了)

1.简述可以用在JSP页面的几种注释

答:

1.HTML注释(在客户端查看源代码时能看见注释):

<!--要注释的内容-->

2.JSP注释(查看源代码的时候不能看见注释):

<%--要注释的内容--%>

3.Java注释(只能出现在Java代码区中,不允许直接出现在页面):

//单⾏注释 

/*多⾏注释*/

2.简述JSP页面可以包含哪些元素

答:在 JSP 2.0 规范中,JSP页面主要包括4部分:JSP 指令元素,JSP 脚本元素,JSP 动作元素和注释。

(1)JSP指令元素:

指令元素在JSP当中的经常出现在头部,也就是page、include、taglib三大幻神

page(<%@ page ...%>)
include(<%@ include file="..." %>)
taglib(<%@ taglib uri="tagLibraryURI" | prefix="tagPrefix" %>)

(2)JSP脚本元素:声明、脚本程序、表达式,这几个没啥好讲的,示例:

声明(<%! deslaration %>)
脚本程序 (<% scriptlet %>)
表达式 (<%= expression %>)

(3)JSP动作元素

include、forward、parameter、usebean、setproperty、getproperty、plugin、params、fallback这几个动作,但只要前面几个是常用的。

<jsp:include> 动作,<jsp:forward> 动作;<jsp:param> 动作;<jsp:usebean> 动作
<jsp:setproperty>和<jsp:getproperty> 动作;<jsp:plugin>、<jsp:params>和<jsp:fallback> 动作

4注释

就是前面提到的三种,HTML、JS、Java的三个注释

<%-- 注释文字 --%>;

<% /*Java脚本注释*/ %>;

<% /**Java脚本文档注释**/ %>(首先java就只能写在<%%>当中)

3.简述JSP的指令标签

答:(1)page:用于定义JSP页面的各种属性,是最复杂的一个指令,它的属性很多,常用的属性有import、language、pageEncoding等。

(2)include:静态包含指令用于引入其他JSP文件,使用include指令引入的其他JSP文件,JSP引擎将把这两个JSP文件翻译成一个servlet,所以将include称为静态包含。

(3)taglib:用于在JSP页面中导入标签库(JSP标准标签库第三方标签库自定义标签库)

4.简述JSP的动作标签

答:JSP动作标签(常用的6个)

 (1)<jsp:include>a.概述:这个动作标签可以将另一个文件的内容包含到当前的JSP页面内。被包含的文件内容可以是静态文本也可以是动态代码。

        格式:

<jsp:include page="url" flush="false|true"/> 

     page:用于指定被包含文件的相对路径。

     flush:可选参数,用于设置是否刷新缓冲区。默认值为false;如果设置为 true ,则在当前也页面输出使用了缓冲区的情况下,将先刷新缓冲区,然后再执行包含工作。

   

<jsp:include page="url" flush="false|true"> 

子标签 </jsp:include>

(2)<jsp:forward>:是请求转发标签。该标签可以将当前页面的请求转发给其他Web资源。

(3)<jsp:param>:该标签可以作为其他标签的子标签,为其他标签传递参数

  <jsp:param name="paramName"value="paramValue" />

 name:指定参数的名称

    value:设置对应的参数值

(4).<jsp:useBean>

    用于在JSP页面中创建一个JavaBean实例,并通过属性的设置将此实例存放在JSP指定范围内     格式: 

<jsp:setProperty 

                name = "实例名"; 

                { 

          property="*"| 

          property="属性名"| 

          property="属性名" param="参数名"| 

           property="属性名" value="值" 

                }/> 

        参数: 

      name属性:指定JavaBean的引用名称 

      property属性:指定JavaBean中的属性名,此属性是必须的,其取值有两种,分别为“*”、“JavaBean的属性名称” 

        param属性:指定JSP请求中的参数名,通过该参数可以将JSP请求参数的值赋给Java的属性 

        value属性:指定一个属性的值

5.简述静态包含include与动态包含include的区别

答(1)语法上:静态包含语法: <%@inclue file=“被包含的页面”%>

动态包含语法: <jsp:include page=“被包含的页面”>

(2)传递参数不同:静态包含不能向被包含页面传递参数;

        动态包含可以使用jsp:param标签向被包含页面传递参数

(3)原理不同:静态包含:先合并再翻译、<%@ include file=“被包含的页面”%>该指令在编译之前先读入指定的页面中的内容(并不对动态内容求值),融合后的完整页面再被整体的转换为一个servlet。(先引入后编译,生产一个.class文件);include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前的jsp页面,优点是执行速度快。

动态包含:先翻译再合并、<jsp:include page=“被包含的页面”/>该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答(产生两个.class文件);include动作标记在jsp页面运行时才被处理的文件。被处理的文件在逻辑和语法上独立与当前的JSP页面,其优点是可以使用param子标记更灵活的处理所需要的文件,缺点是执行要慢一点

(4)用法:动态 include用 jsp:include 动作实现

 <jsp:include page=“included.jsp” flush=“true” />

它总是会检查所含文件中的变化 , 适合用于包含动态页面 , 并且可以带参数。各个文件分别先编译,然后组合成一个文件。   

静态 include 用 include 伪码实现 , 定不会检查所含文件的变化 , 适用于包含静态页面

<%@ include file=“included.htm” %>

先将文件的代码被原封不动地加入到了主页面从而合成一个文件,然后再进行翻译,此时不允许有相同的变量。

6.简述JSP的常用内置对象

答:1Out对象,一般用来向页面输出信息的,常用方法out print(),如果需要换行的话,一般out print("");

  2Request对象,Request对象叫请求。请求中封装了客户端所有的信息(cookies,session,表单数据浏览器的信息等)

常用方法:1.getParameter(String name):返回指定参数名称的数值,如果没有相对应的数字,则返回NULL

2.getParameterValues(String name):返回具有相同参数名称的数值的集合返回String类型的数组

3.getParameterDispatcher(String uripath):页面的转发地址不会发生改变,因为针对客户端来说只发生了一次请求;

3Response对象,Response对象叫响应,服务器端向客户端的请求做出响应常用方法Response.sendRedirect("index.jsp");

4Session对象,叫会话:每一个浏览器访问网站,服务器就会给这个请求创建一个会话,存储到服务器端,服务器根据每一个会话的ID来区分每一个请求的用户;

5Application对象,整个应用程序只有一个,所有的用户都可以访问到安全性较高,使应用程序启动就产生了一直保存在服务器端,要应用程序关闭才通常用于存储一些所有用户都需要的数据

7.简述form表单中method属性的值get和post的区别

答:(1)数据传输方向:Get是从服务器上获取数据,而post是用来向服务器上传输数据

(2)安全性: get提交验证的用户名和密码是不安全的,因为提交的数据将会以明码的方式出现在URL参数中,可以在浏览器记录中查看,而post则并没有显性的提交,在URL中提交时,post是将表单里面的数据保存在form数据库中,按照变量与值相对应的方式传递到action所指向的url里,所以也不会被显示在浏览器地址栏URL里面,能够有效的保存用户的信息。

(3)提交数据长度:Git提交的数据长度较短,最大限制为2 KB(HTTP specification并没有对URL长度进行限制,但是IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度),超过最大长度后就会没有效果,而post没有长度限制

(4)编码:Git,只能向服务器发送ASCII字符,而post则可以发送整个ISO 1066中的字符(若指定encype="multipart/form-data的话),注意get和post对应的enctype属性有区别,enctype有两个值默认值application/x-www-from-unlencode,而另一个值multipart/form-data只能用于post。

(5)缓存:由于一个get得到的结果,对应一个uri,所以get的结果有可能会被缓存,而post 1般不能

(6)引用和SEO:和缓存一样的原因,可以用一个uri引用一个get的结果页面,而post的结果不能,所以必然不能被搜索引擎搜索到

8.简述转发请求forward与重定向sendRedirect的区别

答(1)从地址栏显示来说,forward是服务器请求资源,服务器直接访问目标地址的URL把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址栏

    (2)从数据共享来说,forward:转发页面和转发到的页面可以共享request里面的数据redirect:不能共享数据

    (3)从运用地方来说,forward:一般用于用户登录的时候,根据角色转发到相应的模块redirect :一般用于用户注销登陆时返回主页面和跳转到其他的网站等

    (4)从效率来说,forward效率高,redirect效率低

9.简述cookie与session的区别

答:(1)存储位置不同:cookie数据信息存放在客户端浏览器上,session的数据信息存放在服务器上

(2)存储容量不同:单个cookie保存的数据<=4 KB,一个站点最多保存20个cookie;对于session来说并没有上限,但出于对服务器端的性能考虑session类不要存放过多的东西 并设置session删除机制

(3)存储方式不同:cookie只能保管ASCII字符串,并需要通过编码方式存储Unicode字符或者二进制数据;session中能够存储任何类型的数据,但包括且不限制于string integer list map的

(4)隐私策略不同:cookie是对用户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的;session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险

(5)有效期上不同:开发可以通过设置cookie的属性达到使cookie长期有效的结果;session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为负一只需要关闭窗口该session就会消失,因而session不能达到长期有效的效果

(6)服务器压力不同:cookie保管在客户端不占用服务器资源,对于并发用户十分多的网站cookie是很好的选择,session是保管在服务器端的,每一个用户都会产生一个session,假如并发访问的用户十分多,会产生十分多session消耗大量的内存

(7)浏览器支持不同:a.假如客户端浏览器不支持cookie:Cookie是需要客户端,浏览器支持的,假如客户端禁用了cookie或者不支持cookie,则会话跟踪会失效,关于WAP上的应用,常规的cookie就派不上用场了;运用session需要使用URL地址重写的方式,一切用到session的程序的URL都要进行URL地址重写,否则session会话跟踪还是会失效

b.假如客户端支持cookie:Cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效,session这个只能在本窗口以及子窗口内有效

(8)跨域支持上不同:Cookie是支持跨域名访问,而session不支持跨域名访问

10.简述Javabean规范都有哪些?

JavaBean是一种符合特定规范的Java类,通常用于对象的持久化存储,JavaBean规范主要包含以下几个方面:

(1)命名规范:JavaBean类的命名必须遵循驼峰式命名规则,即类名的第一个字母应该小写,如果类名由多个单词组成,则第二个单词开始每个单词的第一个字母应该大写。

(2)公共构造方法:类必须有一个无参的公共构造方法。

(3)属性和方法:JavaBean类必须有与之对应的属性、getter和setter方法,属性名应该与getter和setter方法的命名相对应。

(4)实现Serializable接口:JavaBean类必须实现java.io.Serializable接口,以确保对象可以序列化和反序列化。

(5)序列化UID:JavaBean类必须定义一个类型为long类型、名为serialVersionUID的静态变量。

(6)其他规范:JavaBean类应该是独立的,与其他类无关;属性的访问修饰符应该为private;getter和setter方法的访问修饰符应该为public。

11.JSP Model2架构模型采用了什么技术,各项技术对应MVC的哪一模块,作用是什么。

JSP Model2架构模型采用了以下技术:

(1)Servlet技术:用于实现控制器(Controller)模块。控制器接受客户端请求,处理请求,将结果传递给视图模块。

(2)JSP技术:用于实现视图(View)模块。视图生成最终的HTML、CSS、JavaScript等静态文件,将控制器返回的数据展示给用户。

(3) JavaBean技术:用于实现模型(Model)模块。模型负责处理业务逻辑,与数据库交互,提供数据给控制器,控制器再将数据传递给视图。

(4)Servlet技术对应于MVC的控制器模块,负责接收并处理客户端请求,调用JavaBean处理业务逻辑,并将处理结果传递给JSP视图。

(5)JSP技术对应于MVC的视图模块,负责将数据展示给用户,生成最终的HTML、CSS、JavaScript等静态文件,将用户的请求发送给控制器。

(6)JavaBean技术对应于MVC的模型模块,负责处理业务逻辑,与数据库交互,提供数据给控制器,从而完成整个MVC模型的数据处理和业务逻辑处理。

12.简述Servlet接口中,init方法、service方法、destroy方法的作用。

Servlet接口中,init()方法、service()方法、destroy()方法的作用如下:

(1) init() 方法:在Servlet对象被创建时执行。该方法的作用是初始化Servlet,它只会被执行一次,并且在Servlet实例化之后立即执行。init() 方法通常用于加载配置文件、初始化数据库连接、获取服务器资源等操作。

(2) service() 方法:每当有用户请求发生时,容器就会调用 service() 方法,并将请求传给该方法。该方法接受客户端请求并给出响应。在 service() 方法中,通常会根据不同的请求类型,调用不同的方法来处理请求,例如 doGet() 方法和 doPost() 方法。

(3) destroy() 方法:当Servlet容器(例如Tomcat)重新加载或关闭Web应用程序时,容器将调用destroy()方法,在该方法中可以执行清理活动(例如关闭数据库连接)和显式释放在Servlet初始化期间分配的其他资源。该方法只会被执行一次, Servlet容器在运行时不会再次调用Servlet实例的service()/doGet()/doPost()等方法。

综上所述,init()方法在Servlet对象被创建时执行,service()方法对每个用户请求进行响应,而destroy()方法在Web应用程序关闭或Servlet容器重新加载时执行清理操作。它们三个一起构成了Servlet的生命周期。

13.简述使用PreparedStatement执行sql命令的好处。

使用PreparedStatement执行SQL命令的好处有以下几点:

(1)提高程序性能:对于同一个PreparedStatement对象,如果要执行多次相似的SQL语句,只需要设置参数的不同值,就可以重复利用PreparedStatement对象,这样可以显著提高程序性能。

(2) 避免SQL注入:使用PreparedStatement可以有效地避免SQL注入攻击,因为PreparedStatement在执行SQL语句前会对输入参数进行处理,它会自动转义掉特殊字符,防止恶意用户在输入参数中插入恶意代码。

(3) 提高代码可读性:在使用PreparedStatement时,参数直接在SQL语句中使用问号占位符表示,这样可以使代码更加简洁、易读。在代码阅读和维护时,也更容易理解SQL操作的含义。

(4)支持批处理操作:PreparedStatement支持批处理操作,可以一次性执行多个SQL语句,这样可以减少与数据库的交互次数,从而提高程序性能。

综上所述,使用PreparedStatement执行SQL语句可以提高程序性能、避免SQL注入攻击、提高代码可读性和支持批处理操作,是一种比较常用的数据库操作方式。

14.简述请求转发与重定向的区别

请求转发和重定向是Java Web中两种常用的页面跳转方式,它们的主要区别如下:

(1)前者是服务器内部流程,在服务器端完成重定向,跳转的是同一个请求,而后者是客户端请求过程中的跳转,跳转时客户端发起新的请求。

(2)请求转发是服务器内部的操作,整个请求操作由服务器完成,客户端浏览器是无法感受到的;而重定向是客户端浏览器行为,服务器端只是一句响应指令,让客户端重新发起一个新的请求,从而进行跳转。

(3)在请求转发的过程中,服务器将请求传递给下一个页面,共享请求的上下文(Context),所以多个页面之间可以方便地共享数据;而在重定向的过程中,客户端发送了一个新的请求,上一个请求的上下文被销毁,所以无法共享数据。

(4)请求转发速度比重定向快,因为它只是将请求重定向到服务器内部的另一个页面,而重定向需要让客户端重新发送请求,再重新响应,速度相对较慢。综上所述,请求转发和重定向是两种不同的处理方式,请求转发是服务器内部的处理,速度较快,可以共享请求上下文,而重定向直接把跳转的任务交给了浏览器,速度较慢,无法共享请求上下文。选择使用哪种方式,主要根据实际需求而定。

15.简述JSP隐式对象request、response、exception和out对象的作用。

JSP隐式对象是指由Web容器自动创建的一些特殊对象,可以在JSP页面中直接使用而无需进行额外的声明和初始化。其中,request、response、exception和out四个隐式对象分别的作用如下:

(1)request对象:封装HTTP请求信息,它可以获取浏览器发送的参数信息、Cookie信息、请求头信息等,同时也可以向其他Servlet或JSP页面传递数据。可以使用request.setAttribute()方法设置属性,使用request.getAttribute()方法获取属性。

(2)response对象:封装HTTP响应信息,通过response对象,可以向浏览器发送响应消息,例如:设置Cookie、重定向到其他页面、设置HTTP响应头等。常用的方法有response.getWriter()方法获取输出流、response.sendRedirect()方法进行重定向。

(3) exception对象:封装当前发生异常的相关信息,例如异常的原因、类型、栈轨迹等。可以通过在JSP页面中添加errorPage指令,当JSP页面出现异常时,自动跳转到指定的错误页面。

(4)out对象:提供JSP页面向客户端输出信息的方式,它是一个PrintWriter对象,可以使用out.print()、out.write()等方法将文本、HTML或其他类型的内容输出到浏览器。

综上所述,request、response、exception、out这四个JSP隐式对象,分别用于封装和处理HTTP请求和响应相关的信息和功能,可以帮助开发人员更方便地开发Web应用程序。

MVC(Model-View-Controller)是一种软件架构模式,用于组织和设计应用程序的结构,以实现业务逻辑、用户界面和数据之间的解耦。

16.MVC模式由以下三个核心组件组成:

1. 模型(Model):模型代表应用程序的数据和业务逻辑。它负责处理数据的存储、检索、更新和验证,并提供一组接口供控制器访问和操作数据。

2. 视图(View):视图是用户界面的可视化展示。它负责呈现模型数据并向用户显示信息。视图通常是被动的,只负责显示数据,不处理业务逻辑。

3. 控制器(Controller):控制器接受用户的输入和命令,并根据用户的操作调用模型和视图进行相应的处理。它负责协调模型和视图的交互,并根据业务逻辑处理用户的请求。

MVC模式通过将应用程序的不同责任进行分离,实现了模块化和可维护性。它使得应用程序的扩展和修改更加容易,同时提供了更好的代码复用和解耦。因此,MVC模式在许多软件开发框架和平台中得到广泛应用,包括Web开发、桌面应用程序和移动应用程序等领域。

17.JDBC(Java Database Connectivity)是Java语言用于与关系型数据库进行交互的API(应用程序接口)标准。它提供了一组用于连接、查询和更新数据库的方法和类。

通过JDBC,Java应用程序可以通过驱动程序连接到不同的数据库,如MySQL、Oracle、SQL Server等,以执行各种数据库操作,包括创建数据库连接、执行SQL语句、获取查询结果集、事务处理等。JDBC提供了一种统一的方式来访问不同数据库系统,使开发人员能够编写可移植的数据库应用程序。

JDBC使用了一种称为"数据库驱动程序"的中间件层,该驱动程序提供了与特定数据库系统的通信接口,将Java程序的请求转换为数据库所能理解的命令。开发人员可以根据不同的数据库系统选择适当的驱动程序,以便与其进行交互。

总之,JDBC是Java语言中用于与关系型数据库进行交互的API,为开发人员提供了一种标准的、可移植的方式来访问和操作数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值