Java基础——JSP

一、JSP的由来

在很多动态网页中,绝大多部分内容是不变的,只有局部内容需要动态产生和改变。例如, 一个新闻的浏览次数,只有这个次数是动态改变的,而Servlet程序返回客户端的代码全是java程序动态创建的。Servlet 的缺点,处理界面困难。JSP 是在Servlet的基础上发展起来的,它弥补了Servlet在界面处理方面的缺陷。

简单来讲,JSP =html+java片段+jsp标签+javascript,它功能强大,可以和javabean 结合

另外,JSP+javabeen+servlet 就构成了mvc模式。

JSP是运行在服务端的,也就是说,我们在桌面上创建一个.JSP文件,它也不能能够被执行哦。

我们将它黏贴到Tomcat上的webapps文件中(或者你直接在里面创建.jsp文件也可以)。

下一步,我们要启动tomcat。接着在浏览器中访问:http://localhost:8080/myweb/Demo.jsp。

接下来神奇的事情发生了。在Tomcat的webapps中可以看到,帮我们自动生成两个文件。

二、JSP的简介

摘录自百度:

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。

用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

三、最简单的JSP程序

<%
     String userName="zhangsan";
%>

<script>
      alert(  <% userName %> );
</script>

注意:访问JSP的过程

如果是第一次访问服务器,则翻译成一个对应的java文件(Servlet)。然后,再被编成 .class 文件并加载到内存中。

如果是以后访问,则直接调用内存中的jsp实例,所以第一次访问慢,以后访问会更加快。

四、3种JSP注释

1.

<%
        //this is
        /* this
        is */
%>

2.

<%--  //这样的注释内容不会被发送到客户端
  这是被注起来的内容
<h1>这是注起来的</h1>
--%>

3.

<!-- <% out.print("老板让我干的活我就不干");  %>   -->   //这里的内容会发送到客户端,但浏览器不会显示

五、JSP脚本元素(3种)

1.

1) 代码段 <% %>
它要严格遵守java语言规范,需要导包的要导包
<% %> 和   <% %> 之间的java代码是可以互相访问的,相当于写在一个  <% %>里

2.

2) 声明 <%!xxxxxxx%>   //注意 <%! 中间千万不能空格
<%!public String test(){
return "ok:";
}%>

3.

3) 表达式 <%= xxx  %>    //注意 <%= 中间千万不能空格,后面不能有分号
<%=String str="嘻嘻嘻";%>

例子:
<label><%= str %></label>  //和下面的写法等价
<label><% out.print(str); %></label>

附:myeclipse 生成的jsp页面,解说:

(在实际应用中,不需要的我们可以删除它)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   //解说:page指令,import用来导包的,pageEncoding指当前页面编码方式
<%
    String path = request.getContextPath();  //解说: contextPath 代表web应用的名称 /shop-admin
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        //上下对齐解说: //http                    //localhost                        //8080            // shop-admin
        //上面最后生成的结果:-> http://localhost:8080/shop-admin/
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> //解说:言档类型声明
    <html>
        <head>
        <base href="<%=basePath%>">   //解说:<base href="http://localhost:8080/shop-admin/" >   

        <title>My JSP ‘test.jsp‘ starting page</title>
        <body>
        <meta http-equiv="pragma" content="no-cache"> //解说:不缓存
        <meta http-equiv="cache-control" content="no-cache"> //解说:不缓存
        <meta http-equiv="expires" content="0">  //解说:不缓存
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> //解说:给网络机器人用来搜索的关键字
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->

        </body>
    </html>

六、JSP版本的计算器(代码示例)

<%
    //接收参数
    String num1 =request.getParameter("num1");
    String num2 =request.getParameter("num2");
    String flag =request.getParameter("flag"); 

    int  n_num1=0;
    int  n_num2=0;
    int result=0;

    if(num1!=null&&num2!=null&&flag!=null){
    //计算
    n_num1=Integer.parseInt(num1);
    n_num2=Integer.parseInt(num2);

    if(flag.equals("+")){
        result=n_num1+n_num2;
    }else  if(flag.equals("-")){
        result=n_num1-n_num2;
    }else  if(flag.equals("*")){
        result=n_num1*n_num2;
    }else  if(flag.equals("/")){
        result=n_num1/n_num2;
    }

        out.print("<h1>计算结果是 "+result+"</h1>");
    }

    //输出结果
    %>

    <form action="calcUI.jsp" name="form1"  method="get" >
    请输入第一个数:
    <input type="text" name="num1" value=‘<%=request.getParameter("num1")==null?"":request.getParameter("num1")  %>‘/>
    <br/>

    <select name="flag" >
    <option value=‘+‘ <%="+".equals(flag)?"selected ":"" %>>+</option>
    <option value=‘-‘ <%="-".equals(flag)?"selected ":"" %>>-</option>
    <option value=‘*‘ <%="*".equals(flag)?"selected ":"" %> >*</option>
    <option value=‘/‘ <%="/".equals(flag)?"selected ":"" %>>/</option>
    </select>
    <br/>
    请输入第二个数:
    <input type="text" name="num2"  value=‘<%=request.getParameter("num2")%>‘ />

    <input type="submit"  value="计算" />
    </form>

七、MVC模式

M  ->mode 模型层 -> javaBeen  (比如 UserDao,UserInfo)

V  ->view 视图层  -> html , jsp

C  ->controller 控制层  ->由Servlet担当

时间: 2024-10-27 19:41:29

Java基础——JSP的相关文章

java基础--jsp/servlet

后端:servlet  jsp 前后端:ajax 一定要使用自定义协议 TCP/IP: 1    封包 :有可能分为多个包发送hello world 2   粘包:接收方接到后粘包,可能会出错 helloworld  hello world c/s 客户控件GUI-->调用通讯模块-->打包(按照自定义协议将数据封装成一个数据包)-->向业务通讯模块发送请求-->业务通讯模块进行拆包-->通讯模块调用业务-->业务访问DB数据库-->业务模块返回处理结果到通讯--

Java基础——JSP(三)

一. JavaBean 是一种特殊的java类,它遵从一定的设计模式,开发工具和其他组件可以根据这种模式来调用javaBean.它是使用一种符合某些命名方法和设计规范的java类. -- 这个类是可序列化的(能够持久保存也能恢复状态),也就是,它必须实现java.io.Serializable接口 -- 这个类必须带有一个无参数的构造方法. -- 这个类的属性必须通过使用get.set和其他按标准命名规范来命名的方法来操作: getXxx()和setXxx()用于非布尔属性,isXxx()用于布

Java Web基础 --- Jsp 综述(上)

摘要: J2EE是一套规范,而Servlet/Jsp是J2EE规范的一部分,是Tomcat的主要实现部分.在最初的应用实践中,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,这导致Servlet开发效率极为低下.JSP技术通过实现普通静态HTML和动态部分混合编码,使得逻辑内容与外观相分离,大大简化了表示层的实现,提高了开发效率.本文以JSP的本质是Servlet为主线,结合JSP转译后所得的Servlet,详细探讨了JSP的原理.执行过程.脚本元素.编译指令

Java Web基础 --- Jsp 综述(下)

摘要: JSP脚本中包含九个内置对象,它们都是Servlet-API接口的实例,并且JSP规范对它们进行了默认初始化.本文首先通过一个JSP实例来认识JSP内置对象的实质,紧接着以基于请求/响应架构应用的运行机制为背景,引出JSP/Servlet的通信方式与内置对象的作用域,并对每个内置对象的常见用法进行深入介绍和总结. 一. JSP 九大内置对象概述及相关概念说明 JSP脚本中包含九个内置对象,这九个内置对象都是 Servlet API 接口的实例,并且JSP规范对它们进行了默认初始化(由 J

Java之JSP和Servlet基础知识。

JSP基础 JSP起源 JSP,Java Server Pager的简称.由SUN倡导并联合其它公司创建. JSP是一门脚本语言 JSP可以嵌入到HTML中 JSP拥有Java语言的所有特性 面向对象.健壮.多线程.安全.可移植.高性能 JSP运行于JSP容器中 Tomcat.Jetty等. JSP会被转换成Servlet JSP->Servlet->Class文件. Mac下常用shell命令: pwd 打印当前目录 ls 列出当前目录下的所有文件目录 cd 更改目录 .代表当前工作目录 .

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

java基础问题总结

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那里继承方法和实例变量,并

Java基础Day1

Java基础第一天 1.1基础常识 1. 软件开发 软件,即一系列按照特定顺序组织的计算机数据和指令的集合.有系统软件和应用软件之分.    系统软件:系统软件系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作.系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的.比如我们讲的window,linux,mac系统    应用软件:应用软件应用软件是为了某种特定的用途而被开发的软件.它可以是一个特定的程序,比如一个图像浏览器.也可以是一组功能

Java基础常见英语词汇

(转自http://www.jianshu.com/p/2743fe834166) Java基础常见英语词汇(共70个) ['?bd?ekt] ['?:rientid]导向的 ['pr??ɡr?m??]编程OO: object-oriented ,面向对象 OOP: object-oriented programming,面向对象编程 [d?'vel?pm?nt][k?t]工具箱 ['v??tj??l]虚拟的JDK:Java development kit, java开发工具包 JVM:java