`

jsp和servlet知识点总结(转载)

    博客分类:
  • JSP
阅读更多

一.Jsp与servlet的区别:

1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.

3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

 

老师发的答案1:

JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet

来生成动态网页;JSP由HTML代码和JSP标签构成,可以方便地编写动态网页

因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

答案2:

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

 

二.Jsp的九大对象,七大动作,三大指令

 

jsp九大内置对象:

1>out 向客户端输出数据,字节流.如out.print(" dgaweyr");

 

2>request 接收客户端的http请求.

String getParameter(String name):得到表单参数名name的值.

String[] getParameterValues(String name):(得到String[]复选框时常用).

setAttribute(String name,Object obj):设置属性名为name,属性值为obj.

getAttribute(String name);得到属性值.

 

3>response:封装jsp产生的回应,然后发送到客户端以响应客户的请求.重定向跳转任意界面.(服务器跳转)

addCookie(Cookie cookie):

sendRedirect("/wel.jsp"):跳转到指定页面

 

4>session:用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据. session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止.它是HttpSession类的实例. 

setAttribute(String name,Object obj):设置属性名为name,属性值为obj.

getAttribute(String name):得到属性值.

 

5>application对象:实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问.服务器的启动和关闭决定了application对象的生命.它是ServletContext类的实例. 

 

session,application,request的区别:

一个项目中session尽量少用几个,因为过多的session会影响程序的执行效率.它主要用于保存登录信息(用户信息,权限,资源)即频繁使用的信息.

application: 用于多个浏览器之间共享数据,多个用户共享该对象,可以做计数器.它的用法与session完全一样.

数据范围:

application(服务器关闭时失效)>ression(浏览器关闭时失效)>request(只能用于两个跳转页面之间)

 

6>page对象代表jsp这个实体本身,即当前页面有效.相当于java中的this.

数据范围:page<session<application

 

7>.exception:代表运行时的异常.

在会发生异常的页面加入指令:<%@ page errorPage="处理错误的页面.jsp"%>

在处理异常的页面写入:<%@ page isErrorPage="true"%>

 

8>.pageContext对象 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext.

 

9>.config jsp对应的servlet的配置,可以得到web.xml中的初使化参数.

 

jsp七大动作:

一:include 动态包含(分别编译):

用jsp:include动作实现<jsp: include page="included.jsp" flush="true" />

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。flush属性: 用true ,表示页面可刷新。默认为false;

 

二:useBean动作(jsp页面使用javaBean的第二种方式):

<jsp:useBean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)"/>

作用域默认为page(本页面有效).

三:getProperty动作(name为useBean动作中的id).

从对象中取出属性值:<jsp:getProperty name="javaBean对象" property="javaBean对象属性名" />

四:setProperty动作(name为useBean动作中的id):

为对象设置属性值:<jsp:setProperty name="javaBean对象" property="javaBean对象属性名" value="值"/>

为对象设置属性值:<jsp:setProperty property="javaBean对象属性名" name="javaBean对象" param="username"/>

(param="username" 相当于 value=<%=request.getParameter("username")%>)

 

五:param动作(传递参数)):

到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值

<jsp:include page="转向页面的url" > 

           <jsp:param   name="参数名1" value="参数值1"> 

           <jsp:param   name="参数名2" value="参数值2"> 

           ........... 

 </jsp:include> 

或:

<jsp:forward page="转向页面的url" > 

           <jsp:param   name="参数名1" value="参数值1"> 

           <jsp:param   name="参数名2" value="参数值2"> 

           ........... 

</jsp:forward>

 

六:forward动作:

跳转页面:<jsp:forward page="login.jsp" />

 

七:plugin动作:<jsp:plugin>:用于指定在客户端运行的插件

 

JSP三大指令之:

一:page指令:

1.指定页面编码.例:

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

2.导入包,例:

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

二:include 指令

静态包含(统一编译):<%@ include file="included.jsp"%>

 

三:taglib

 

三.Jsp中的静态包含与动态包含

动态include(<jsp: include page="included.jsp"/>)

静态include(<%@ include file="included.jsp"%>)

1. 静态include的结果是把其他jsp引入当前jsp,两者合为一体,可以达到数据的共享即可以说是统一编译的,而

动态include的结构是两者独立的,直到输出时才合并即为分别编译的.

2.动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都由自己创建,而静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能 有变量同名的冲突.而页面设置也可以借用主文件的.

3.动态包含总是检查被包含页面的变化,静态包含不一定检查被包含页面的变化.

4.动态包含可带参数,静态包含不能带参数.如(<jsp: include page="included.jsp">放入参数</jsp:include>);

 

四.Servlet的生命周期

加载(服务器启动时,会到web.xml文件中去找到Servlet文件的配置并创建servlet的实例) → 初使化(init()此方法只执行一次) → 执行(service(),doGet(),doPost()) → 清理(销毁destory()) 

service():方法本身包含了doGet()和doPost().如果服务器发现了service()方法,则不再执行doGet(),doPost().

一般不建议去重写父类的service方法.因为重写了此方法doGet方法和doPost方法将得不到利用.

没有service()方法默认执行doGet()方法.

 

五.Servlet的十大方法

init(HttpServletConfig config): 被servlet 容器调用以指明一个servlet被放进服务中。

service(HttpServletRequest request, HttpServletResponse response):被servlet 容器调用以允许servlet响应一个请求

doGet(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的GET请求 .

doPost(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的POST请求. 

doPut(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的PUT请求. 

doDelete(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的DELETE请求.

destroy():被 servlet container调用以告知一个servlet它被剔除服务。

getServletInfo():返回有关servlet的信息,例如作者、版本、版权。

getServletConfig():返回ServletConfig对象

doHead(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的Head请求.

 

六.Servlet类的基本架构

Servlet 接口:主要定义了servlet的生命周期方法 

ServletConfig接口:为servlet提供了使用容器服务的若干重要对象和方法。 

ServletContext接口:是Servlet的上下文对象,这个对象是在服务器启动时创建的,为servlet提供了使用容器服务的若干重要方法。 

GenericServlet抽象类:为servlet提供了一般的实现(包括实现了servlet和ServletConfig两个接口),保存了容器通过init方法传递给servlet的一个ServletConfig类型的重要对象。 

HttpServlet抽象类:为处理http请求的servlet提供了一般实现,主要是定义和实现了若干service方法。 

继承关系:GenericServlet继承了Servlet和ServletConfig接口;HttpServlet继承了GenericServlet;我们写的servlet继承了HttpServlet 

 

七.如何配置一个servlet使它运行

1.servlet的名字,包类

<servlet>

<servlet-name>httpServletDemo(为servlet取的名字)</servlet-name>

<servlet-class>com.lxitedu.HttpServletDemo(包名.类名)</servlet-class>

</servlet>

 

2.映射.访问的地址(url)

<servlet-mapping>

<servlet-name>httpServletDemo(与上面的servlet名字要完全一样)</servlet-name>

<url-pattern>/myServlet(运行时地址栏显示的文件名)</url-pattern>

</servlet-mapping>

 

八. Get与post有何区别

1.post比get安全.(get用的问号传值法)

2.post接收的长度比较长.

3.post是以表单的形式提交请求的,get是以浏览器的形式提交请求的。所以get比较快。

4.post更能解决我们的中文乱码问题。

在默认情况下是get请求,form的method属性如果不指定,也默认为get请求。

get请求,会将参数显示在浏览器的地址栏上,其显示格式,在地址之后会以?开始,以'&'分隔参数,可以通过HttpServletRequest()对象的getQueryString()方法来获得get请求的参数值。

post请求:ServletRequest对象的getInputStream()方法可以获得一个由Socket得来的输入流,可以使用这个流来实现文件的上传。getReader()方法可以直接获取post请求的参数

 

九.说说jsp或servlet中有哪几种跳转方式。它们有何区别

1.客户端跳转:

1).使用form表单的action属性设置要跳转的页面(此方法可以将此页面的form表单属性值传递到下一页面):如下

<form action="my.jsp" name="lili" onsubmit="return test()">

<input type="submit" value="提交">

或者(为button类型需要手动提交表单):

<input type="button" value="注册" onclick="test()">

javascript的函数:

function test(){

    //手动设置跳转页面

     document.lili.action="my1.jsp";

    document.lili.submit();

}

2).使用javascript中的页面跳转的方法(不能将form表单中的属性值传递到下一页面):

window.location.href="my.jsp";

window.location.replace("my.jsq");//此方法不可将页面后退.

2.服务端跳转的两种方法对比:

<jsp:forward page="xxx.jsp"/>:等价于

request.getRequestDispatcher("xxx.jsp").forward(request,response);

本服务器的资源跳转,效率更高.地址栏不改变(仍为跳转前的页面).可得到request属性值.

response.sendRedirect("xxx.jsp"):

重定向到任意资源.地址栏改为当前页面.无法得到request属性值.

 

十.servlet中的数据能与jsp共享吗?如果可以如何传递

能,我们可以将servlet中的数据放入HttpSession,HttpServletRequest,ServletContext,PageContext对象中,

在jsp页面中使用其相对应的内置对象得到我们servlet中的数据.

 

原地址:

http://blog.csdn.net/mcy478643968/article/details/6150072

分享到:
评论

相关推荐

    jsp和servlet知识点总结

    【JSP和Servlet知识点详解】 一、JSP与Servlet的区别 1. **本质与生成**:JSP(Java Server Pages)本质上是Servlet的一种简化形式,它将HTML代码和Java代码结合在一起,经过Web容器(如Tomcat)的处理,被编译成...

    jsp&servlet知识点总结.doc

    jsp&servlet知识点总结.doc

    JSP和Servlet基础知识点

    - **Tomcat、Jetty**:Servlet容器,运行和测试Servlet和JSP应用。 - **JSP/Servlet API文档**:开发者可以查阅API了解详细功能和用法。 ### 结合实践 通过阅读博文《JSP和Servlet基础知识点》(链接:...

    jsp、servlet知识总结

    总结,JSP和Servlet是Java Web开发中不可或缺的组件,理解它们的工作原理和相互关系对于构建高效、可维护的Web应用至关重要。通过持续学习和实践,开发者可以灵活运用这两项技术,解决各种复杂的Web开发问题。

    jsp Servlet总结

    jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结

    旅游管理系统 jsp+servlet.zip

    开发者可以通过研究这些源码来理解系统的实现方式,学习如何整合JSP、Servlet和数据库,以及如何设计和组织Web应用的各个部分。 6. **毕业设计/课程设计作业**:这表明该系统可能是作为高等教育中的一个实践项目,...

    Servlet&JSP知识点归纳思维导图

    以下是对Servlet和JSP知识点的详细归纳: **Servlet** 1. **Servlet概念**:Servlet是Java编写的小型服务器端程序,运行在Web服务器上,用于处理客户端请求并返回响应。 2. **生命周期**:Servlet的生命周期包括...

    JSP+Servlet实现简易购物车功能

    在Web开发领域,JSP(JavaServer Pages)和Servlet是常用的两种技术,它们结合使用能够构建动态、交互式的Web应用程序。本项目“JSP+Servlet实现简易购物车功能”就是一个典型的示例,它展示了如何利用这两者来创建...

    JSP与Servlet 技术总结

    JSP & Servlet 技术总结 JSP技术总结 2 1. JSP页面元素构成 2 2. JSP脚本元素 2 3. 注释 2 4. JSP指令 2 5. JSP动作元素 3 6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向...

    JSP+servlet+mysql网盘系统源码+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...JSP+servlet,网盘系统,mysql

    基于JSP+Servlet小项目

    【基于JSP+Servlet小项目】是一个典型的JavaWeb应用程序,它是使用JavaServer Pages(JSP)技术和Servlet进行开发的。这个项目可能包含了从用户界面到后端数据处理的完整流程,展示了如何在Web环境中整合这两种技术...

    JSP+Servlet面试题

    以下是 JSP 和 Servlet 相关的知识点总结: 一、JSP 和 Servlet 基础知识 * JSP 和 Servlet 都是服务器端执行的,通常返回给客户端的是一个 HTML 文本。 * JSP 在服务器上执行,并将执行结果输出到客户端浏览器。 ...

    jsp和servlet留言板

    总的来说,【jsp和servlet留言板】是一个基础的Java Web项目,涵盖了JSP和Servlet的核心概念,以及与数据库交互、HTTP请求处理、IDE和服务器配置等相关知识,是学习和实践Java Web开发的一个典型实例。

    吉林大学珠海学院JSP&Servlet学习笔记(第二版)课后答案

    本资源为吉林大学珠海学院JSP&Servlet学习笔记(第二版)的课后答案,涵盖了JSP和Servlet相关的知识点。本笔记共分为九章,每章节都包含了相关的问题答案,涉及到JSP和Servlet的各个方面。 在第一章中,本笔记涵盖...

    jsp&servlet电子书

    对于认证考试的准备,书中还特别整理了相关的复习资料和模拟试题,帮助考生更好地理解和记忆关键知识点,提高考试通过率。 总之,《jsp&servlet电子书》是学习JSP和Servlet的理想教材,无论你是初学者还是有一定...

    servlet与jsp总结

    自己总结的servlet与jsp部分 希望对大家有所帮助

    JSP源码——音乐网站(JSP+SERVLET).zip

    这个项目是一个基于JSP和Servlet技术构建的音乐网站,用于展示和播放音乐。JSP(JavaServer Pages)是Java平台上的动态网页技术,而Servlet是Java Web开发中的核心组件,常用于处理HTTP请求。两者结合,可以创建强大...

    jsp与servlet的联系和区别

    ### jsp与servlet的联系和区别 在深入探讨JSP与Servlet的联系与区别的过程中,我们首先需要理解这两个概念的基本定义以及它们在Web开发中的角色。 #### JSP(JavaServer Pages) JSP是一种基于Java技术的动态网页...

    jsp+servlet项目

    4. 使用请求转发或重定向在Servlet和JSP之间传递数据。 5. 在Servlet中处理业务逻辑,例如访问数据库、验证用户输入等。 6. 将处理结果存储在请求或会话域中,然后转发到JSP页面显示。 7. JSP页面通过EL(Expression...

Global site tag (gtag.js) - Google Analytics