zoukankan      html  css  js  c++  java
  • Java Web-----JSP与Servlet(一)

    JSP (java服务器页面)

      JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由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技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

    servlet

      Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
      狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
      最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
     

    创建第一个项目

      1. 选择Dynamic Web Project  , 模板版本选择2.5

      2. 项目的目录结构, META-INF不用理解 , WEB-INF下lib存放jar包与web.xml文件(必要的配置),服务器响应页面在WebRoot下,如图中index.jsp.

      3. tomcat添加项目,启动tomcat .

     

    JSP基本语法

      例如上例中的index.jsp文件:  

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'index.jsp' starting page</title>
    13     <meta http-equiv="pragma" content="no-cache">
    14     <meta http-equiv="cache-control" content="no-cache">
    15     <meta http-equiv="expires" content="0">    
    16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    17     <meta http-equiv="description" content="This is my page">
    18     <!--
    19     <link rel="stylesheet" type="text/css" href="styles.css">
    20     -->
    21   </head>
    22   
    23   <body>
    24     This is my JSP page. <br>
    25   </body>
    26 </html>

      1.在开始的page中:

        language用来设置脚本语言,jsp中只有java一种

        Language : 用来定义要使用的脚本语言

        contentType:定义 JSP 字符的编码和页面响应的 MIME 类型

        pageEncoding:Jsp 页面的字符编码

        2.scriptlet 标签
        通过 scriptlet 标签我们可以在 Jsp 里嵌入 Java 代码;
     


          第一种:<%! %>
            我们可以在里面定义全局变量、方法、类;

        

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'index.jsp' starting page</title>
    13     <meta http-equiv="pragma" content="no-cache">
    14     <meta http-equiv="cache-control" content="no-cache">
    15     <meta http-equiv="expires" content="0">    
    16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    17     <meta http-equiv="description" content="This is my page">
    18     <!--
    19     <link rel="stylesheet" type="text/css" href="styles.css">
    20     -->
    21     
    22     <%! 
    23         String str = "全局变量" ;
    24     %>
    25     <%! 
    26         public void func(){
    27             System.out.println("全局方法");
    28         }
    29     %>
    30     <%! 
    31         class My{
    32             private int a = 1; 
    33             public void f(){ 
    34                 System.out.println("全局类");
    35             }
    36         }
    37     %>
    38   </head>
    39   
    40   <body>
    41     This is my JSP page. <br>
    42   </body>
    43 </html>

        将上述jsp放入tomcat编译之后:

            

            在tomcat的work目录下寻找到jsp中java代码的编译文件

               



        第二种:<% %>
            我们可以在里面定义局部变量、编写语句;

            与第一种相差不多,具体可以尝试.



        第三种:<%= %>
            我们可以在里面输出一个变量或一个具体内容;

            相当于在页面中输出一段信息,如 <%=b%> 会输出变量b  

      

      3. Jsp 注释

    <!-- -->         Html 注释 客户端(在浏览器查看网页源码时)可见
    <%-- --%>   Jsp 注释 客户端(在浏览器查看网页源码时)不可见
    //       java  单行注释
    /*
    */       java 多行注释

      4. Jsp包含指令


        <%@ include file=”要包含的文件”%>

                    

            在同级目录下创建MyHtml.html文件,内容只有:

    1   <body>
    2     My Html page<br>
    3   </body>

           在index.jsp中添加静态包含指令代码:

    1   <body>
    2     <%@ include file="MyHtml.html" %>
    3   </body>

                启动 tomcat :

        



        <jsp:include page=”要包含的文件”>

               基本操作与上述相差不多,只不过 静态包含先把包含文件加入,再编译运行, 动态包含是先编译,在将包含文件插入 . 在开发中应多使用动态包含.
     

       5. Jsp 跳转指令

    <jsp:forward page=" ">
    <jsp:param value=”” name=”” />
    </jsp:forward>
    服务器内部跳转,可带参数;

    例如 , 从form.jsp中带参数跳转至target.jsp 中

                  form.jsp :

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'form.jsp' starting page</title>
    13     
    14     <meta http-equiv="pragma" content="no-cache">
    15     <meta http-equiv="cache-control" content="no-cache">
    16     <meta http-equiv="expires" content="0">    
    17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    18     <meta http-equiv="description" content="This is my page">
    19     <!--
    20     <link rel="stylesheet" type="text/css" href="styles.css">
    21     -->
    22 
    23   </head>
    24   
    25   <body> 
    26      <jsp:forward page="target.jsp">
    27         <jsp:param value="HelloWorld" name="forward"/>
    28      </jsp:forward>
    29   </body>
    30 </html>

                target.jsp :

     1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     2 <%
     3 String path = request.getContextPath();
     4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     5 %>
     6 
     7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     8 <html>
     9   <head>
    10     <base href="<%=basePath%>">
    11     
    12     <title>My JSP 'target.jsp' starting page</title>
    13     
    14     <meta http-equiv="pragma" content="no-cache">
    15     <meta http-equiv="cache-control" content="no-cache">
    16     <meta http-equiv="expires" content="0">    
    17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    18     <meta http-equiv="description" content="This is my page">
    19     <!--
    20     <link rel="stylesheet" type="text/css" href="styles.css">
    21     -->
    22 
    23   </head>
    24   
    25   <body>
    26     get form jsp: <%=request.getParameter("forward") %>
    27   </body>
    28 </html>

          启动tomcat ,访问 http://127.0.0.1:8000/HelloWorld/form.jsp      (HelloWorld是项目名称)

            


      

     

            

  • 相关阅读:
    springmvc spring mybatis框架整合
    多线程bug修复
    OutOfMemory
    CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
    css中line-height行高的深入学习
    HTML5的新语义化的标签
    关于Three.js基本几何形状
    【Google Chrome】 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource问题解决
    模拟Bootstrap响应式网格系统
    关于我对写博客那些事儿的实用心得
  • 原文地址:https://www.cnblogs.com/LexMoon/p/JspServlet1.html
Copyright © 2011-2022 走看看