1. JSP全称是什么?它相比servlet有什么优势?有什么劣势?

    • JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。

      JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。

      JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

          JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

    • JSP优点:

      一次编写,到处运行。除了系统之外,代码不用做任何更改。

      系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP的局限性JSP的优势是显而易见的。

      强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

      多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

      支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

    • JSP缺点:

      正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。

      Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。

    • servlet优点:

      Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

      功能强大

      在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

      可移植性好

      Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

      节省投资  

      不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

      缺点:

         

  2、JSP的本质是servlet,为什么这么说?

    

    Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。

    JSP本质上是Servlet的一种简易形式, JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。

  3、我们访问a.jsp就是访问我们写好的a.jsp文件,这种说法对吗?为什么?

    不对,JSP页面执行过程

  4、【上机】画图说明访问a.jsp的整个流程。

  5、<% %>是Java代码块的语法。如果在JSP文件中写多个代码块,它们都是位于_jspService方法里吗?

  6、看代码解决问题:

<%

int c = 10;

%>

<%

int d = c+10;  //这个代码块能引用上个代码块的变量吗?说出理由。

%>

可以。

  7、page指令的contenttype,import分别对应Java源码中什么代码?

  8、静态导入和动态导入的区别是?

    

静态导入语法

<%@include file="scriptlet.jsp"%>

动态导入语法

<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="patameterValue">
</jsp:include>

    静态导入是完全融入,两个页面融合成一个Servlet

    动态导入是在Servlet中,使用include方法来引入被引导页面内容

    静态导入被编译页面指令会起作用

    动态导入只是插入被导入页面的body内容

    .动态导入可以增加额外的参数

  9、说出这三种注释的区别:HTML注释、Java注释、JSP注释。

  10、<jsp:include>是JSP标签,他是在什么时机执行?

    

  • jsp:include标签中引入的资源是在运行时才包含,而且只包含运行结果。而include指令引入的资源是在编译时期包含,包含的是源代码。

  A . 浏览器解析HTML

       B.  Java编译器生成class文件时

       C.  JSP引擎将JSP代码转译Java源代码

  11、表达式:<%=request.getParameter("a")%>, Java源代码中对应代码是什么?

    < %=request.getParameter(“username”)% > 等价于 ${ param.username }

  12、<%!  %>中可以定义成员变量和方法。 能否在<% %>中引用呢? 并用代码测

    可以

  13、session对象,我不想在JSP页面中预先定义。怎么做?

    

如何使用Session:

  1 得到session

在servlet中:HttpSession hs=request.getSession(true);

JSP中,session是一个内置对象,可以直接使用、

  2 向session添加属性

servlet中:hs.setAttribute(String name,Object o)

   JSP中 session.setAttribute(String name,Object o)

  3 从session得到某个属性

servlet中:hs.getAttribute(String name);

JSP中: session.getAttribute(String name);

  4 从session删除某个属性

servlet中:hs.removeAttribute(String name);

JSP中:session.removeAttribute(String name);

  14、pageContext、request,session,application四个作用域的区别? 

    一、 生命周期:

    1.   page:存在page中的变量,只作用于当前的jsp页面,当发生跳转、重定向、定时刷新时,将随之销毁;
    2.   request:存在request中的变量,作用于一次HTTP请求到服务器处理结束,返回响应的整个过程,该变量可以随着forward的方式跳转到多个jsp中,一但刷新页面,它们将重新计算;
    3.   session:存在Session中的变量,作用于一次会话中,从打开浏览器到关闭浏览器过程中,将一直累加;(若想在再次打开浏览器时,变量仍然存在,则可以将session的JSESSIONID存到Cookie中,在给cookie一个存活时间)
    4.   application:存在application中的变量,作用于整个应用中,即从应用启动到应用结束,如果不进行手工删除,它们将一直可以使用,而且这些变量所有用户均可使用。

    二、 作用范围:

    1.   page:用户请求的当前页面;
    2.   request:用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件;
    3.   session:同一个Http会话中的web组件共享;
    4.   application:整个web应用的所有web组件共享,即只要是同一个服务器下的均可使用。

  15、JavaBean是什么?用来做什么的? JavaBean定义时,必须要无参的构造方法吗?

    

  JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:

  • 这个Java类必须具有一个无参的构造函数
  • 属性必须私有化。
  • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

  

  优点:1.实现界面和Java代码分离,便于日后维护和扩展

2.可解决代码重复编写,减少代码冗余。

  原则上类可以没有无参数构造器。但是你就不能在许多地方使用这个类啦!

  因为他们都需要先调用new BeanClass();然后才能被设置属性或者赋值给其他的需要的类。

  16、<jsp:forward>定义请求转发后,在它后面的代码会不会被执行,为什么?

    

  redirect 后,确认了要跳转的页面的 url,继续执行 redirect 下面的代码;执行完后,断开当前的与

用户所发出的请求连接,即断开 request 的引用指向,因此 request 里存放的 username 信息也会丢失

;然后再与用户建立新的请求连接,即创建新的 request 对象,这样 false 页面的通过

request.getAttribute("user") 就会得到一个 null 值;最终显示的是页面是 false 页面,所以地址栏

的 url 内容会发生变化。

  forward 后,确认了要跳转的页面的 url,现在停止继续执行后面的代码,而是先执行 success

(servlet) 里的代码,执行完后再回来继续执行 check 后面的代码;在这期间 check 和 success 共享

一个 request 和 response 对象,所以 success 页面通过 request.getAttribute("user") 便可以取到

值;这个过程最后执行的还是 check 页面(即使 forward 后面没有任何代码),所以地址栏的 url 内容

不会发生变化。

  17、下面这个异常可能是什么原因引起的:

org.apache.jasper.JasperException: /4.jsp(5,27) Expecting "jsp:param" standard action with "name" and "value" attributes

  18、<jsp:include>是静态导入还是动态导入?

    动态导入

  19、MVC模式各个字母分别指的是什么意思?

    

MVC的概念,即M-model-模型:JavaBean;V-view-表现:JSP页面;C-control-控制和处理:Servlet。

  20、查资料解释JSP开发中,model-1和model-2是什么意思?

  看这里

  1. model-1有什么劣势?有什么优势?
  1. model-2有什么优势?它符合MVC模式吗?

  21、【上机】使用model-1,完成登录项目

http://www.itkeyword.com/doc/063899862555715059/JSP-JavaBean-JavaWeb

  22、上机】使用model-2,完成登录项目

http://blog.csdn.net/suneqing/article/details/46277313

百战程序员——JSP的更多相关文章

  1. 百战程序员-xml

    1.用自己的语言说出,为什么需要XML? XML 是一种元标注语言,该语言提供一种描述结构数据的格式.这有助于更精确地声明内容,方便跨越多种平台的更有意义的搜索结果.此外,XML 将起用新一代的基于 ...

  2. 百战程序员——Spring框架

    什么是容器,我们学过了哪些容器,Spring与我们之前学习的容器有哪些异同点? 容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如 ...

  3. 百战程序员——EL、JSTL

    1.EL表达式可以操作作用域中的属性,也可以操作普通的局部变量.对吗? 不对 El表达式一般支持作用域(application.session.request.pagecontext)中的属性.EL变 ...

  4. 百战程序员——JDBC

    JDBC全称是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  5. 百战程序员9- IO流

    1.IO是什么意思? data source是什么意思? IO:输入输出 data source:数据源 2.字节流和字符流有什么区别?输入流和输出流有什么区别? 分类 3.节点流和处理流有什么区别? ...

  6. @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)

    一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...

  7. 黑马程序员【JSP九大内置对象和四个作用域】转载

    http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ------ ...

  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  9. [转载]一个标准java程序员的进阶过程

    第一阶段:Java程序员 技术名称 内                 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...

随机推荐

  1. PDF 补丁丁 0.6.1.3498 版重大更新:为文本PDF文档自动生成书签!

    新的 PDF 补丁丁开放了内部测试了很久的好用功能——自动书签. 这个功能可以在一分钟内快速生成文本型 PDF 文档的书签(说明:本功能分析文档中的文本,生成标题,故对扫描版的 PDF 文档无效). ...

  2. 得到本地电脑IP4地址

    using System.Linq;using System.Net;using System.Net.Sockets; namespace winform_udp{ public class com ...

  3. 根据关键字获取高德地图poi信息

    根据关键字获取高德地图poi信息 百度地图和高德地图都提供了根据关键字获取相应的poi信息的api,不过它们提供给普通开发者使用的次数有限无法满足要求.其次百度地图返回的poi中位置信息不是经纬度,而 ...

  4. Eclipse远程调试+FTPClient在jdk6以上写法不兼容问题的排查

    业务场景: 应业务新需求的UAT测试,需要部署一份新tomcat到测试环境.新环境正常启动并运行了一天,没太大差错.但今天发现原本在另一个老的tomcat下运行的好好的FTP上传文件模块突然出了问题. ...

  5. jmeter如何链接数据库并拿到相应值用到请求中

    很久以前学习了jmeter如何使用数据库连接并请求相应值.jmeter如何上传文件 结果现在忘记了很多...,现在重头学习一遍,所以说 还是边学边记录,那天忘记了 ,自己看看笔记 分步骤来写 1.数据 ...

  6. 关于Appium android input manager for Unicode 提示信息

    Appium调完输入法后,会弹出  Appium android input manager for Unicode 提示信息相关的提示信息,每次运行如此,如下图 网络上查找一遍,基本解决了,只要在设 ...

  7. Problem B: STL——集合运算

    Description 集合的运算就是用给定的集合去指定新的集合.设A和B是集合,则它们的并差交补集分别定义如下: A∪B={x|x∈A∨x∈B} A∩B={x|x∈A∧x∈B} A-B={x|x∈A ...

  8. Eclipse如何新建TOMCAT并配置Server Locations和Publishing属性

    Eclipse如何新建TOMCAT并配置Server Locations和Publishing属性 2018年05月08日 23:10:33 ACGkaka_ 阅读数:1269   一.建立TOMCA ...

  9. 利用Excel-Vba进行多表汇总和数据透视表

    汇总表格式 详情表格式 要求根据汇总表中的信息,到详情表中查找详细物料的具体个数 最终,对物料的个数进行汇总,结果如下图: ExcelVba代码如下(有一些注释代码供参考) Sub Start() S ...

  10. 精进之路之JMM

    JMM (Java Memory Model) java内存模型 Java内存模型的抽象 Java线程之间的通信由Java内存模型(本文简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一 ...