Java Web-----JSP与Servlet(一)

时间:2023-03-09 07:54:51
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

Java Web-----JSP与Servlet(一)

Java Web-----JSP与Servlet(一)

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

Java Web-----JSP与Servlet(一)

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

Java Web-----JSP与Servlet(一)Java Web-----JSP与Servlet(一)

JSP基本语法

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

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<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">
-->
</head> <body>
This is my JSP page. <br>
</body>
</html>

  1.在开始的page中:

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

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

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

    pageEncoding:Jsp 页面的字符编码

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


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

    

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<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">
--> <%!
String str = "全局变量" ;
%>
<%!
public void func(){
System.out.println("全局方法");
}
%>
<%!
class My{
private int a = 1;
public void f(){
System.out.println("全局类");
}
}
%>
</head> <body>
This is my JSP page. <br>
</body>
</html>

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

        Java Web-----JSP与Servlet(一)

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

        Java Web-----JSP与Servlet(一)  


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

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


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

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

  3. Jsp 注释

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

  4. Jsp包含指令


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

                Java Web-----JSP与Servlet(一)

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

   <body>
My Html page<br>
</body>

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

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

            启动 tomcat :

    Java Web-----JSP与Servlet(一)


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

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

   5. Jsp 跳转指令

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

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

              form.jsp :

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'form.jsp' starting page</title> <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">
--> </head> <body>
<jsp:forward page="target.jsp">
<jsp:param value="HelloWorld" name="forward"/>
</jsp:forward>
</body>
</html>

            target.jsp :

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'target.jsp' starting page</title> <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">
--> </head> <body>
get form jsp: <%=request.getParameter("forward") %>
</body>
</html>

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

        Java Web-----JSP与Servlet(一)