JSP入门

一、什么是JSP?

  JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

1)为什么说,Servlet是一个动态Web开发技术呢?
  Servlet是基于服务端的一种动态交互技术,
  HttpServletRequest表示客户端到服务端的对象
  HttpServletResponse表示服务端到客户端的对象

2)JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术

3)JSP的代码结构/内容=HTML+JSP所有元素内容

4)在IDE工具中,开发JSP,pageEncoding有二层含义:
  a)指明当前JSP中的中文采用什么方式编码(如果在IDE工具外)
  b)指明当前JSP页面保存时采用什么方式编码

5)项目中,JSP最佳实践模式:

   Servlet:适合控制器

  JSP:适合显示

  JavaBean:模型

二、JSP工作原理

  1)Web容器根据客户端访问的资源类别(Web容器会根据资源的第一行代码确定),如果你访问的是JSP资源,就交由JSP引擎处理如果你访问的是Servlet资源,就交由Servlet引擎处理

  2)如果是JSP资源,JSP引擎会将其翻译成Servlet资源,传入相关的对象,如果是静态资源,以out.write()形式输出,如果是动态资源,以out.print()形式输出

  3)此时JSP引擎在翻译正确后,将其输出给Servlet引擎,当作Servlet处理。

  4)如果再次访问同一个.jsp文件,翻译工作依然进行,Servlet引擎工作可以减化,所以这是为会么第N次较第1次快的原因

三、JSP基本语法

  1)JSP模版元素 

JSP页面中的HTML内容称之为JSP模版元素。
JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。
模版元素就是HTML中的静态内容,即<body>,<table>,<form>等标签。。。

  2)JSP脚本表达式 

 

    JSP脚本表达式(expression)用于将程序数据输出到客户端

    a)语法:<%="字符串变量或表达式"%>
    b)结束无分号
    c)默认输出到浏览器

[注意]JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write(…) 将数据输给客户端。
JSP脚本表达式中的变量或表达式后面不能有分号(;)

   3)JSP脚本片断

    a)语法:<% ...java代码; %>
    b)脚本片断中的注释符号与java代码一致
      注意:JSP修改后,无需重新部署,直接刷新,Web容器会自动比较新旧二个版本的JSP
    c)多个JSP脚本片断中定义的变量,本质是_jspService()方法中的局部变量,可以访问           

JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。语法:
<%
多行java代码
%>
1)JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
2)在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
举例:
    <%
      int x = 10;
      out.println(x);
    %>
    <p>这是JSP页面文本</p>
    <%  
      int y = 20;
      out.println(y+””+x);
    %>
多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
3)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例如:
      <%
for (int i=1; i<5; i++)
{  
%>
<H1>www.itcast.cn</H1>
<%
}
%>

  4)JSP声明

    JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面,即实例变量。

 

    a)语法:<%! ...java代码 %>
    b)JSP声明的变量或方法,会成为Servlet的实例变量或实例方法或普通方法
    c)JSP脚本片断中不能定义局部方法,方法只能定义在JSP声明中

 所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
    多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
    JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
    例如:
<%!
static
{
System.out.println("loading Servlet!");
}
private int globalVar = 0;
public void jspInit()
{
System.out.println("initializing jsp!");
}
%>
<%!
public void jspDestroy()
{
System.out.println("destroying jsp!");
}
%> 

  5)JSP注释    

    1)语法<%-- 注释的内容 --%>
    2)对于HTML注释来说,JSP引擎会将其翻译成servlet内容,对于JSP注释来说,JSP引擎不会将其翻译成servlet内容
    3)注释不能嵌套使用

   6)JSP指令

    JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令。

 

     1)指令是程序员控制JSP引擎做什么的依据

    2)有三类:

      a)page
      b)include
      c)tablib

   下篇继续,,,

转载于:https://www.cnblogs.com/hacket/archive/2013/03/09/2951855.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初学c++

看了两章不到。。随意记录下。 #include<iostream> #include<string> using std::cout; using std::endl; double calculation(double a,double b,char op) {switch(op){case : return ab;case -:return a-b;case *:return a*b;case /:return a/b;}}double num0;do…

从头开始vue创建项目_我正在以设计师的身份开始一个被动的收入项目。 从头开始。...

从头开始vue创建项目Do you ever read an article on Medium (or elsewhere) about passive income, side projects and big money making blogs? When I read such an article it looks like it is easy to do yourself if you just put in the work. To see if that is the …

Exaple2_1(显示转换)

public class Example2_1{ public static void main(String arg[]){ char ca; System.out.println(""c"unicode:"(int)c); System.out.println(":"); for(int i(int)c;i<c25;i){ System.out.println(""(char)i); } }}转载于…

英国文化影响管理风格_文化如何影响用户体验

英国文化影响管理风格重点 (Top highlight)The Internet makes the world a smaller place. You can make money or gain users outside of your demographic with a digital product or service easier than a physical business. But, is selling the exact same design of t…

ubuntu12.04安装教程

第一部分&#xff1a;准备Ubuntu12.04的启动盘 Ubuntu支持可移动盘和CDROM安装&#xff0c;笔者选择后者。在Ubuntu官网http://www.ubuntu.org.cn/download/desktop下载Ubuntu镜像文件(.iso)&#xff0c;通过光盘刻录机将该镜像文件刻录到一张空白CD/DVD上。 第二部分&#xff…

element ui 空格_空格是您的UI朋友。 大量使用它。

element ui 空格Originally published at marcandrew.me on July 30th, 2020.最初于 2020 年7月30日 在 marcandrew.me 上 发布 。 Ah good old White Space. One of the simplest things to add to your designs to improve both your UIs, and user experience. Let me shar…

solaris 11 vim的安装【转】

转自&#xff1a;http://www.itkee.com/os/detail-4a4.html 下面是安装方法&#xff0c;拿出来分享一下 ①下载软件的地方&#xff1a; ftp://ftp.sunfreeware.com/pub/freeware/intel/10/ http://artfiles.org/sunfreeware.com/pub/freeware/i386/10/ vim-7.2-sol10-x86-local…

看看老外是如何理解抽象类的

下面是我翻译的关于帮助理解抽象类的例子。 这是一个例子帮助我们理解抽象类。在我看来这是一个非常简单的方法。让我们一起来看看下面的代码&#xff1a; <?php class Fruit { private $color; public function eat() { //chew } publi…

qt 设计师缩放_重新设计缩放体验

qt 设计师缩放With the COVID-19 pandemic hitting countries across the world, a lot of people have now switched to video meetings. Be it for your official meetings, webinars, entertainment sessions — video meetings are the new normal. We saw these video mee…

安卓应用部件_设计应用程序小部件的痛苦和喜悦

安卓应用部件Some people say widgets are a thing of the past, but recently we faced a market for which this was one of the main features users were asking for. A bit of googling showed there are not a lot of useful articles covering widget design (most info…

ASP.NET MVC3中的ViewBag动态性

在MVC 3中的有一个新的ViewBag 动态特性&#xff0c;它主要是为了从Controller到view进行传值用的&#xff0c;类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大&#xff0c;意味着你能动态的set/get 值&#xff0c;增加任何数量的的额外字段而不需要强类型的检测。…

ux设计中的各种地图_UX设计中的空白

ux设计中的各种地图UX设计中的空白是什么&#xff1f; (What is white space in UX design?) This article will help you learn about white space and why it so important in UX design.本文将帮助您了解空白以及为什么空白在UX设计中如此重要。 White space is a very us…

花点时间了解消息,句柄和窗口

消息、句柄和窗口 一&#xff0c;为什么我要花时间研究这些东西 对于我个人来说我不想做码农&#xff0c;不想只知道拖控件&#xff0c;使用控件有的时候要了解一下底层&#xff0c;不知道你们有没有想过这样的一个问题&#xff0c;我们在C#中使用的的event事件是怎么触发这个事…

ux设计中的各种地图_如何在UX设计中使用颜色

ux设计中的各种地图Color is the mother tongue of the subconscious.颜色是潜意识的母语。 — Carl Jung—荣格 Color has more to say than meets the eye. As a building block of visual language, color highlights, guides attention, and unifies elements. In UX, co…

《Two Dozen Short Lessons in Haskell》学习(十八) - 交互式键盘输入和屏幕输出

《Two Dozen Short Lessons in Haskell》&#xff08;Copyright © 1995, 1996, 1997 by Rex Page&#xff0c;有人翻译为Haskell二十四学时教程&#xff0c;该书如果不用于赢利&#xff0c;可以任意发布&#xff0c;但需要保留他们的copyright&#xff09;这本书是学习 Ha…

figma设计_Figma中简单,可重复使用的设计系统

figma设计Putting together a design system may seem like an unnecessary hassle. It’s often easier to jump straight into designing things without having to worry about styles, components, or libraries. Some might even argue that when it comes to smaller pro…

WPF 关于鼠标事件和坐标

Mouse.GetPosition(window);可以在任何时间获得相对任意元素的鼠标位置 Mouse.Capture(el);可以让某个元素获得所有的鼠标事件不管他应不应该的到鼠标事件 Mouse.Capture(null);解除转载于:https://www.cnblogs.com/wangjixianyun/archive/2013/03/25/2980953.html

访问25%无法访问的人-如何设计可访问性

We’re increasingly dependent on the internet and computers for everything we do — this has become starkly more obvious through the COVID19 global pandemic.我们所做的一切都越来越依赖于互联网和计算机-通过COVID19全球大流行&#xff0c;这一点变得更加明显。 F…

DDD:实体如何处理外部依赖

场景 修改用户名时&#xff0c;要验证用户名的唯一性。 实现1 1 public class User 2 { 3   public void ChangeUsername(string newUsername) 4   { 5   //使用服务定位器获取IUsernameUniqueService &#xff0c;执行验证。 6   } 7 } 实现…

架构师论坛 创业_我在早期创业时作为设计师学到的东西

架构师论坛 创业For over 2 years at a young product company, I collaborated with talented engineering folks for a 0 → 1 suite of products. Here are my learnings and key takeaways. Of course, these are my views and do not represent those of my employers or …