JSP的4种基本语法:

  1.JSP注释:

    <%-- JSP注释部分 --%>

  2.JSP声明:

    <%! //声明一个整型变量

      public int count;

      //声明一个方法

      public String info(){

        return "hello";

      }

    %>

  3.输出JSP表达式:

    <%=count++%>

    这句话代替了Java中的out.print(count++);但是注意输出表达式后面不能有分号。

  4.JSP脚本:

 1 <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
 2 <html>
 3 <head>
 4     <title>欢迎</title>
 5 </head>
 6 <body>
 7 <table bgcolor="#9999dd" border="1" width="300px">
 8 <%
 9 for(int i = 0; i < 10; i++){
10 %>
11 <tr>
12     <td>循环值:</td>
13     <td><%=i%></td>
14     </tr>
15 <%
16 }
17 %>
18 </body>
19 </html>

View Code

JSP的3个编译指令:(这里只讲两个)

  1.page指令:位于JSP页面的顶端,一个JSP页面可以是用多条page指令。

  page语法格式:<%@page  contentType="text/html; charset=GBK" language="java" ... %>

contentType属性参考网页:http://developer.51cto.com/art/201106/270666.htm

  2.include指令:可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句。

    include既可以包含静态的文本,也可以包含动态的JSP页面。静态的include编译指令会将被包含的页面加入本页面,融合成一个页面,因此被包含页面不需要是一个完整

     页面。

    静态include格式:<%@include file="relativeURLSpec"%>

JSP的7个动作指令:

  1.forward指令:用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet.

  2.include动态指令:用于包含某页面,被包含的页面不会导入包含页面,仅仅将被包含页面的body内容插入本页面。

  3.useBean指令:用于在JSP页面初始化一个Java实例

  4.setProperty指令:用于为JavaBean实例的属性设置值

  5.getProperty指令:用于输出JavaBean实例的属性

  若多个JSP页面需要重复使用某段代码,则可以把这段代码定义成Java类的方法,然后让多个JSP页面调用该方法,这样可以代码复用。

  6.plugin指令:主要用于下载服务器端的JavaBean或Applet到客户端执行。由于程序在客户端执行,所以客户端必须安装虚拟机

  7.param指令:用于设置参数值,该指令不能单独使用,可以与jsp:include、jsp:forward、jsp:plugin三个指令结合使用。

JSP脚本中的9个内置对象:

  这9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化(有JSP页面对应Servlet的_jspService()方法来创建这些实例)。即它们已经是对象,可直接

   使用。

  1.application:javax.servlet.ServletContext的实例,这个实例代表JSP所属的Web应用本身,可用于JSP页面,或者Servlet之间交换信息。

  2.config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。

  3.exception:java.lang.Throwable的实例,用来代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用

  4.out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。

  5.page:代表该页面本身,也就是Servlet中的this,其类型就是生成的Servlet类,能用page的地方就可用this。

  6.pageContext:javax.servlet.jsp.PageContext的实例,该对象代表JSP页面上下文使用该对象可以访问页面中的共享数据。

  7.request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里,获取客户端请求参数必须使用该对象。

  8.response:javax.servlet.http.HttpSerletResponse的实例,代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。

    response对象常用于重定向。

  9.session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。当客户端浏览器和站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。

Servlet介绍:

  JSP的本质就是Servlet,开发者把编写好的JSP页面部署在Web容器中之后,Web容器会将JSP编译成对应的Servlet。

  直接使用Servlet坏处:Servlet的开发效率非常低,特别是当使用Servlet生成表现层页面时,页面中的所有HTML标签,都采用Servlet的输出流来输出,极其繁琐。

  自MVC规范出现后,Servlet的责任开始明确下来,仅作为控制器使用,不在需要生成页面标签,也不再作为视图层角色使用。

Servlet的开发:

  Servlet被称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求。

  Servlet是个特殊的java类,继承自HTTPServlet。

  Servlet提供不同的方法用于响应客户端请求:

    1.doGet:响应客户端的GET请求

    2.doPost:响应客户端POST请求

    3.doPut:响应客户端PUT请求

    4.doDelete:响应客户端DELETE请求

  客户端的请求通常只有GET和POST两种,Servlet为了响应这两种请求,必须重写doGet()和doPost()两个方法。

  大部分时候Servlet对于所有请求的响应都是完全一样的。此时可以采用重写service(HttpServletRequest request, HttpServletResponse response)方法来代替上面的几个方法,

   即可响应客户端的所有请求。

  不用为Servlet类编写构造器,若要对Servlet执行初始化操作,应将初始化操作放在Servlet的init()方法中定义。若重写init(ServletConfig config)方法,则应该在重写该方法的

   第一行调用super.init(config)。这样该方法将调用HTTPServlet的init方法。

 1 package lee;
 2
 3 import javax.servlet.*;
 4 import javax.servlet.http.*;
 5 import javax.servlet.annotation.*;
 6
 7 import java.io.*;
 8
 9 // Servlet必须继承HttpServlet类
10 @WebServlet(name="firstServlet"
11     , urlPatterns={"/firstServlet"})
12 public class FirstServlet extends HttpServlet
13 {
14     // 客户端的响应方法,使用该方法可以响应客户端所有类型的请求
15     public void service(HttpServletRequest request,
16         HttpServletResponse response)
17         throws ServletException,java.io.IOException
18     {
19         // 设置解码方式
20         request.setCharacterEncoding("GBK");
21         response.setContentType("text/html;charSet=GBK");
22         // 获取name的请求参数值
23         String name = request.getParameter("name");
24         // 获取gender的请求参数值
25         String gender = request.getParameter("gender");
26         // 获取color的请求参数值
27         String[] color = request.getParameterValues("color");
28         // 获取country的请求参数值
29         String national = request.getParameter("country");
30         // 获取页面输出流
31         PrintStream out = new PrintStream(response.getOutputStream());
32         //输出HTML页面标签
33         out.println("<html>");
34         out.println("<head>");
35         out.println("<title>Servlet测试</title>");
36         out.println("</head>");
37         out.println("<body>");
38         // 输出请求参数的值:name
39         out.println("您的名字:" + name + "<hr/>");
40         // 输出请求参数的值:gender
41         out.println("您的性别:" + gender + "<hr/>");
42         // 输出请求参数的值:color
43         out.println("您喜欢的颜色:");
44         for(String c : color)
45         {
46             out.println(c + " ");
47         }
48         out.println("<hr/>");
49         out.println("您喜欢的颜色:");
50         // 输出请求参数的值:national
51         out.println("您来自的国家:" + national + "<hr/>");
52         out.println("</body>");
53         out.println("</html>");
54     }
55 }

View Code

  Servlet和JSP的区别是:

    1.Servlet中没有内置对象,原来JSP中的内置对象都必须由程序显示创建

    2.对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出

  JSP是Servlet的一种简化,使用JSP只需要完成程序员要输出到客户端的内容,JSP脚本嵌入一个类中由JSP容器完成。

  Servlet是一个完整的Java类,这个类的service()方法用于声称对客户端的响应。

Servlet的配置:

  编辑好的Servlet源文件并不能响应用户请求,还需将其编译成class文件。将编译后的class文件放在WEB-INF/classes路径下,若Servlet有包,则在WEB-INF/classes路径下创建

   对应的文件夹。

  从Servlet3.0开始,配置Servlet有两种方式:

    1.在Servlet类中使用@WebServlet注解进行配置:参考网址:http://blog.csdn.net/kpchen_0508/article/details/41312735

    2.在web.xml文件中进行配置:参考网址:http://01121264-163-com.iteye.com/blog/1530063

JSP/Servlet的生命周期:

  JSP本质是Servlet,开发者编写的JSP页面将由Web容器编译成对应的Servlet,当Servlet在Web容器中运行时,其实例的创建及销毁都不是由程序员决定的,而是由Web容器进

   行控制。

  创建Servlet实例有两个时机:

    1.客户端第一次请求某个Servlet时,系统创建Servlet的实例:大部分的Servlet都是这种。

    2.Web应用启动时立即创建Servlet实例,即load-on-startup Servlet。

  每个Servlet的运行都遵循如下生命周期:

    1.创建Servlet实例

    2.Web容器调用Servlet的init方法,对Servlet进行初始化

    3.Servlet初始化后,将一直存在于容器中,用于响应客户端请求。若客户端发送GET请求,Web容器调用Servlet的doGet方法处理并响应请求;若客户端发送POST请求,

     荣器调用Servlet的doPost方法处理并响应请求。或统一使用service()方法来响应用户请求。

    4.Web容器决定销毁Servlet时,先调用Servlet的destroy方法,通常在关闭Web应用之时销毁Servlet。

深入理解Java对象的创建过程:类的初始化与实例化:http://blog.csdn.net/justloveyou_/article/details/72466416

Servlet生命周期与工作原理:http://www.cnblogs.com/cuiliang/archive/2011/10/21/2220671.html

Request的getParameter和getAttribute方法的区别: http://blog.csdn.net/huoyunshen88/article/details/8603306

使用Servlet作为控制器:

  M:Model,模型,对应JavaBean,对数据进行操作

  V:View,视图,对应JSP页面,展示给用户的页面

  C:Controller,控制器,对应Servlet,做出M和V之间的逻辑

URI和URL的区别:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html

Filter介绍:

  使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter在对服务器响应进行后处理。

  Filter有如下几个用处:

    1.在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest

    2.根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据

    3.在HttpServletResponse到达客户端之前,拦截HttpServletResponse

    4.根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据

  Filter有如下几个种类:

    1.用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求

    2.日志Filter:详细记录某些特殊的用户请求

    3.负责解码的Filter:包括对非标准编码的请求解码

    4.能改变XML内容的XSLT Filter等

    5.Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截

  创建一个Filter只需两个步骤

    1.创建Filter处理类

    2.web.xml文件中配置Filter

静态和伪静态网站的区别:http://www.divcss5.com/html/h63.shtml

使用URL Rewrite实现网站伪静态:http://www.cnblogs.com/ljxxz/p/3560791.html

<url-pattern>/*</url-pattern>的解释:http://blog.csdn.net/qq_36870779/article/details/62883466

application,request,session三个对象,谁可以获取谁?http://www.cnblogs.com/z0228-0322x/p/6170588.html

转载于:https://www.cnblogs.com/lanshanxiao/p/7461255.html

第二章.JSP/Servlet及相关技术详解相关推荐

  1. 数据库中北大学第二章ppt总结和课后习题详解(小宇特详解)

    数据库中北大学第二章ppt总结和课后习题详解(小宇特详解) 第2章 数据模型与系统结构 2.1 数据模型的基本概念 现实世界--具体事物->信息世界--概念模型->机器世界--DBMS支持 ...

  2. JSP, Servlet常见面试题详解

    JSP, Servlet常见面试题 1,J2EE是什么? J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台. J2EE也是一个框架,包括JDBC.JNDI.RMI.JMS.EJB.JT ...

  3. 并发编程专题——第二章(并发编程之Synchronized详解)

    日常中我们都会用到Synchronized关键字,但是面试就喜欢问这些,你说不重要吧,面试就不问了,你说重要吧,工作中除了高并发之外,很少能在业务代码中使用到的.所以笔者顶着风险,写下此篇对Synch ...

  4. 第二章 Roboguide安装及注册步骤详解

    Roboguide安装及注册步骤详解 一.安装前需要了解的 1.软件获取途径 2.版本说明 3.系统软件及硬件需求 二.安装软件 1.安装前准备工作 2.软件安装步骤 3.注册软件 4.卸载软件 5. ...

  5. $.post把表单对象传递过去_第二章 第三节 Request请求对象详解

    Request对象和Response对象是必须熟悉的. Request对象负责请求的构造和处理 Response对象负责返回资源的解析和处理 一.Request对象参数 Request(url[, c ...

  6. 2013年计算机控制A卷答案,计算机控制技术第二章习题标准答案整理及详解(2013.04.26修改版SK).doc...

    第2章 习题参考答案 1.什么是接口.接口技术和过程通道? 答: 接口是计算机与外设交换信息的桥梁,包括输入接口和输出接口. 接口技术是研究计算机与外部设备之间如何减缓信息的技术. 过程通道是计算机与 ...

  7. [ 云原生之谜 ] 云原生背景 定义 相关技术详解?

  8. 一对一直播软件源码开发,直播相关技术详解

    一对一直播软件源码中直播流程图 一.数据采集 通过一对一直播软件源码移动设备的端麦克风摄像头采集音视频数据. 视频采集 AVCaptureDevice 前后摄像头作为视频源生成输入 AVCapture ...

  9. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(下)V1.0

    由于本学期我给本科生上<数据结构与算法>这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正. 第二章 C#语言与面向对象技术(下) 二.面向对象技术 5.属性 6.索 ...

  10. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(中)V1.0

    由于本学期我给本科生上<数据结构与算法>这门课程,边上边把自己的教案进行总结,发到CSDN上面,希望大家多多指正. 第二章 C#语言与面向对象技术(中) 二.面向对象技术 1.类与对象 2 ...

最新文章

  1. 在SolidWorks 3D CAD中构建乐高直升机
  2. EBS查询当前LOV SQL
  3. 单链表的建立,插入和释放
  4. UE4学习-游戏退出、游戏打包
  5. 深入框架本源系列 —— Virtual Dom
  6. 点赞!这4款你常用的App已上线隐私政策
  7. SpringBoot + Mybatis-puls + ClickHouse增删改查入门教程
  8. 推荐系统组队学习——矩阵分解和FM
  9. pmp 资料_1年 = 15300订阅 + 超100万次收听 (感恩有您,这些PMP备考资料您值得拥有!)...
  10. 全国计算机等级考试二级Web程序设计考试大纲(2018年版)
  11. 三通短信每月发送量导入Sqlserver随笔
  12. 记录一次redmibook pro15声卡驱动相关问题
  13. MATLAB高维矩阵的求和、索引
  14. LikeLib,这才是真实的百万级别TPS
  15. [Banner] The number of titles and images is different
  16. python制作qq登录界面_使用Python编写一个QQ办公版的图形登录界面
  17. 【爬虫】python爬虫从入门到放弃
  18. IAR代码溢出问题处理section placement failed
  19. 一个简单的税利计算器(网页版)
  20. 马云豪掷三千亿,你又如何能分到100个月季度奖?

热门文章

  1. 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理...
  2. ORA29902执行ODCIIndexStart()例行程序中出错 SQL空间查询ST_Geometry配置
  3. CF1042C Array Product
  4. ES6、7学习笔记(尚硅谷)-8-三点运算符
  5. pod镜像拉取策略、重启容器策略
  6. java 主流算法_java常用算法
  7. windows下调整linux分区大小,如何在Windows 10/8/7中调整分区大小
  8. python爬取京东商品价格教科书中文版_基于Python爬取京东双十一商品价格曲线
  9. python自动化_Python 接口自动化
  10. 弹性盒怎么实现左边图片右边文字_【粉丝问题】如何用ps修改照片中的文字数字?...