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是项目名称)

        


  

 

        

原文地址:https://www.cnblogs.com/LexMoon/p/JspServlet1.html