jsp基本知识
1.什么是jsp?什么作用?
- jsp的全称是java serverpages。java的服务器界面
- jsp的主要作用是代替Servlet程序回传html页面的数据
- 因为Servlet程序回传html页面数据是一件非常繁琐的事情。开发成本和维护成本都极高。
- jsp如何访问?
- jsp页面和html页面一样,都是存放在web目录下。访问也跟访问html页面一样。
- jsp页面的本质
- jsp页面本质是一个servlet程序
- 当我们第一次访问jsp页面时,tomcat服务器会将jsp页面翻译成一个java源文件。并且将会对其进行编译成.class字节码程序。我们打开java源文件不难发现内容是java的代码。我们跟踪源代码发现,HttpjspBase类,直接继承了HttpServlet类。也就是说,jsp翻译出来的java类,它间接的继承了Httpservlet类。也就是说,翻译出来了一个servlet程序。
- 通过观察也发现翻译出来的servlet程序的源代码,其实也是通过输出流把html页面回传给客户端。 类似于以下代码的作用:
public class PrintHtml extends HttpServlet {
//通过输出流回传页面的数据
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
// <!DOCTYPE html>
writer.write(" <!DOCTYPE html>\r\n");
// <html lang="en">
writer.write(" <html lang=\"en\">\r\n");
// <head>
writer.write("<head>");
// <meta charset="UTF-8">
writer.write(" <meta charset=\"UTF-8\">\r\n");
// <title>Title</title>
writer.write(" <title>Title</title>\r\n");
// </head>
writer.write(" </head>\r\n");
// <body>
writer.write(" <body>\r\n");
// 这是html页面数据
writer.write("这是html页1111111111111面数据\r\n");
// </body>
writer.write("</body>\r\n");
// </html>
writer.write(" </html>\r\n");
}
}
jsp的三种语法
一、常用的page命令
jsp的page指令可用修改jsp页面中一些重要的属性,或者行为。
- language属性:表示jsp翻译后是什么语言文件,目前只支持java
- contentType属性:表示jsp返回的数据类型是什么。也是源码中response.setContentType()参数值。
- pageEncoding属性:表示jsp页面本身的字符集
- import属性:用于导包,导类。
以下两个属性给out输出流使用
- autoFlush属性:设置当out输出流缓冲区满了之后,是否自动刷新缓冲区,默认是true
- buffer属性:设置缓冲区大小,默认8kb
其他属性:
- errorPage属性:设置当jsp页面运行时出错,自动跳转去的错误页面
- isErrorPage属性:设置当前jsp页面是否是错误信息页面。默认是false。如果是true可用获取异常信息。
- session属性:设置访问当前jsp页面。是否会创建HttpSession对象。默认是true
- extends属性:设置jsp翻译出来的java类默认继承谁。
二、jsp常用的脚本
- 声明脚本
声明类属性、静态代码块、声明方法、声明内部类 - 表达式脚本
作用:在jsp页面上输出数据。所有的表达式脚本都会被翻译到_jspService方法中。表达式脚本都会被翻译成为out.print()输出到页面上。由于表达式脚本翻译的内容都在_jspService()方法中,所有_jspService()方法中的所有对象都可以使用,表达式脚本中的语句不能以分号结束 - 代码脚本