个人java学习路线-JSP初见

基本介绍

1.JSP:JavaServer Pages
	- 基于java语言实现的服务器端页面
	- JSP是javaEE规范之一
	
2.jsp目前通常放在WEB-INF目录外,但在实际开发中,我们很多项目是将JSP放到WEB-INF目录中,保护JSP。
		- WEB-INF目录中的数据是相对安全的
	
3.jsp文件的后缀默认是.jsp
	- 但是这个可以修改的,通过修改CATALINA_HOME/conf/web.xml文件

4.JS和JSP的区别
	- JS:JavaScript,运行在浏览器中,和服务器没有关系
	- JSP:JavaServer Pages,运行在服务器中,JSP底层就是java程序,运行在JVM中
	
5.JSP的执行原理:
	- 浏览器上访问的路径虽然是以.jsp结尾,访问的是某个jsp文件,其实底层执行的是jsp对应的java程序
	- Tomcat负责将.jsp文件翻译成.java源文件,并且将java源文件编译生成.class字节码文件
	- 访问jsp,其实底层还是执行了.class文件中的程序
	- Tomcat服务器内置了一个JSP翻译引擎,专门翻译JSP文件,编译java源文件
	- index.jsp会被翻译生成index_jsp.java,编译生成index_jsp.class
	- index_jsp这个类继承了HttpJspBase,而HttpJspBase继承了HttpServlet
	- 可见jsp就是servlet,只不过职责不同,JSP强项是做页面展示

JSP头部的page指令

首先JSP的使用也是有jar包的,一般应该都有,没有tomcat的lib下有jsp-api.jar

1.jsp头部的page指令:
    可以修改jsp页面中一些重要的属性或者行为
	
	语法:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

    1.  language属性      表示jsp翻译后是说明语言文件,暂时只支持java
    2.  contentType属性   表示jsp返回的数据类型是什么,也就是源码中的response.setContentType()参数值
    3.  pageEncoding属性  表示当前jsp页面文件本身的字符集
    4.  import属性        跟java源代码中一样,用于导包,导类

    - 下面两个属性是给out输出流使用的 --
    5.  autoFlush属性     设置当前out输出流缓冲区满了之后,是否自动刷新缓冲区,默认true
    6.  buffer属性        设置out缓冲区的大小,默认8kb

	autoFlush属性和buffer属性引起的异常
	 java.io.IOException: Error: JSP Buffer overflow         -out缓冲区满了之后不能自动刷新,就会报错
  
    -
    7.  errorPage属性     表示错误后自动跳转去的路径,这个路径一般都是以斜杠打头,他表示请求地址为http://ip:port/工程路径/
                         映射到web目录
    8.  isErrorPage属性   设置当前jsp页面是否是错误信息页面,默认false,如果是true可以获取异常信息
    9.  session属性       设置访问当前jsp页面是否会创建HttpSession对象,默认是true
    10. extends属性       设置jsp翻译出来的java类默认继承谁

jsp中常见的脚本

声明脚本(极少使用)

  声明脚本的格式:        <%!   声明java代码  %>
        作用: 可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块,内部类等。

JSP代码(后面只显示JSP代码)

<%--这个是注释--%>
<%@ page import="java.util.Map" %><%--JSP用java代码导入类的格式,idea会自动导入类--%>
<%@ page import="java.util.HashMap" %>
<%@ page autoFlush="true" buffer="8kb" errorPage="error500.jsp" %><%--修改尝试的page指令--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%--默认生成的page指令--%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div>这是jsp页面数据</div>
<%-- ---------声明脚本------ --%>
<%--1.声明类属性 --%>
<%!
    private Integer id;
    private String name;
    private static Map<String, Object> map;
%>
<%--2.声明static静态代码块 --%>
<%!
    static {
    
    
        map = new HashMap<String, Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
    }
%>
<%--3.声明类的方法 --%>
<%!
    public int abc() {
    
    
        return 12;
    }
%>
<%--4.声明内部类 --%>
<%!
    public static class A {
    
    
        private Integer id = 12;
        private String abc = "abc";
    }
%>
</body>
</html>

表达式脚本

   格式: <%=表达式%>
	    作用: 在jsp页面上输出数据(打印在浏览器上)
	
	    特点:
	       1.   所有的表达式脚本都会被翻译到_jspService()方法中
	       2.   表达式脚本都会被翻译成为out.print()输出到页面上
	       3.   由于表达式脚本翻译的内容都在_jspService方法中,所以_jspService()方法中的对象都可以直接使用
	       4.   表达式脚本中的表达式不能以分号结束

<%-- ---------表达式脚本------ --%>
<%--1.输出整形 --%>
<%=12%><br>
<%--2.输出浮点型 --%>
<%=12.2%><br>
<%--3.输出字符型 --%>
<%="我是字符串"%><br>
<%--4.输出对象 --%>
<%=map%><br>

<%-- _jspService()方法中的对象 --%>
<%=request.getParameter("username")%><br>  

网页显示:
12
12.2
我是字符串
{key1=value1, key2=value2, key3=value3}
null

代码脚本

        格式:
        	  <%
                 java代码
              %>
           作用:在jsp页面中,编写我们自己需要的功能

           特点:
            1>.代码脚本翻译之后都在_jspService方法中
            2>.代码脚本由于翻译到_jspService()方法中,所以在_jspService()方法中的现有对象都可以直接使用
            3>.还可以由多个代码脚本快组合完成一个完整的java语句
            4>.代码脚本还可以和表达式脚本一起组合使用,在jsp页面上输出数据

ps:繁琐,自己写看着都烦,别人看更头疼

<%-- ---------代码脚本------ --%>
<%--if语句 --%>
<%
    int i = 250;
    if (i == 250) {
    
    
        System.out.println("250");
    } else {
    
    
        System.out.println("不是250");
    }
%>
<%--for循环语句 --%>
<table border="1" cellpadding="o">
<%
    for (int j = 0; j < 10; j++) {
    
    
%>
    <tr>
        <td><%=j+1%></td>
    </tr>
<%
    }
%>
</table>
<%--翻译后java文件中_jspService方法内的代码都可以写 --%>
<%
    System.out.println(request.getParameter("username"));
%>

网页输出一个border="1"的表格,内容为:
第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
第9行
第10行

关于JSP中的三种注释

    1>. html注释
        <!--  这是html注释  -->
            html注释会被翻译到java源代码中,在_jspService方法里,以out.writer输出到客户端
    2>. java注释
        和之前的一样
            java注释会被翻译到java源代码中

    3>. jsp注释
        <%--  这是jsp注释  --%>
            jsp注释可以注掉jsp页面中所有的代码

猜你喜欢

转载自blog.csdn.net/youxizaixian123/article/details/119882585
今日推荐