JSP笔记1-JSP概述及基本语法

1.Web应用和web.xml文件

构建web应用

  • JSP(Java sever page)和Servlet是JavaEE规范的两个基本成员。
  • JSP正慢慢发展成单一的表现层技术,不再承担业务逻辑组件及持久层组件的责任。
  • Web应用的文件结构:
        <WebDemo>-------Web应用的名称,可改变

         |--WEB-INF-----区分大小写

         |     |--classes

         |     |--lib

         |     |--web.xml

         |--<a.jsp>------此处可任意放多个jsp页面
 

配置描述符web.xml

  • WEB-INF是一个特殊的文件夹,Web容器会包含该文件夹下的内容,但客户端浏览器无法访问WEB-INF下的任何内容。

以下是eclipse默认生成的web.xml代码,用于配置Web应用的首页列表: 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>practice</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
  • 每个Web容器都会提供一个系统的web.xml文件,用于描述所有Web应用共同的配置属性。如Tomcat的系统web.xml放在Tomcat的conf路径下。

2.JSP的基本原理

  • JSP的本质依然是Servlet(一个特殊的Java类),每个JSP页面就是一个Servlet实例----JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。
  • 对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。

3.JSP的四种基本语法

JSP注释和声明

  • JSP注释
<%-- 注释内容 --%>
  • HTML注释
<!--   注释内容    -->
  • JSP声明
<%! 声明部分 %>
  • JSP注释及声明示例
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP注释及声明</title>
</head>
<body>
<!--此处为html注释-->
<%--此处为jsp注释--%>
<%!
//声明一个整型变量
public int count;
public String info(){
	return "hello World!";
}
%>
<%
out.println(count++);
%>
<br>
<%
out.println(info());
%>
</body>

            运行并查看页面源代码:

            发现没有显示JSP注释,这表明JSP注释不会被发送到客户端

            每刷新一次,count值将加1,甚至可以在不同的机器上打开浏览器来刷新该页面,将发现所有你客户端的count值是连续的,即所有客户端共享了同一个count变量,这是因为:JSP页面会编译成一个Servlet类,每个Servlet在容器中只有一个实例;在JSP中声明的变量是成员变量,成员变量只在创建实例时初始化,该变量的值将一直保存,直至实例销毁。

            JSP声明中独立存在的方法只是一种假象,如info()。这是因为,JSP声明的方法其实是在JSP编译中生成的Servlet的实例方法----Java里的方法是不能独立存在的,JSP页面亦然。

JSP输出表达式

  • 语法格式
<%= 表达式 %>
  • 示例
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>输出表达式</title>
</head>
<body>
<%!
//声明一个整型变量
public int count;
public String info(){
	return "hello World!";
}
%>
<!-- 使用表达式输出变量值 -->
<%=count++%>
<br>
<%=info()%>
</body>
</html>

        上例使用<%= %>代替了原来的out.println()输出语句,注意count++和info()等表达式后不能加分号(如<%count++;%>)。

JSP脚本

  • 语法格式:     
<% JSP脚本 %>
  • 示例
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>jsp脚本</title>
    </head>
    <body>
    <%
    for(int i=0;i<=10;i++){
    %>
    <%-- 此处为循环体 --%>
    	<table border="1" width="200">
    	<td>循环值</td>
    	<td width="50"><%=i %></td>
    	</table>
    <% 
    }
    %>
    </body>
    </html>

            运行截图:

           对应在Tomcat 9.0\work\Catalina\localhost\practice\org\apache\jsp路径下的JSPscript_jsp.java代码片段:

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
 
   .........
for(int i=0;i<=10;i++){
      out.write('\r');
      out.write('\n');
      out.write("\r\n");
      out.write("\t<table border=\"1\" width=\"200\">\r\n");
      out.write("\t<td>循环值</td>\r\n");
      out.write("\t<td width=\"50\">");
      out.print(i );
      out.write("</td>\r\n");
      out.write("\t</table>\r\n"); 
}
    ........


   由此可以看出,JSP脚本将转换成_ jspService方法里的可执行代码,故可以得出:

             1.JSP脚本部分声明的变量是局部变量,且不能使用private、public等访问控制修饰符,也不可使用static修饰。

             2.Java语法不允许在方法里定义方法,所以JSP脚本里不能定义方法。

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值