2021-11-30-jsp

一.什么是jsp,有什么用?
jsp全程是java server pages.java的服务器页面.
jsp的主要作用是代替Servlet程序回传html页面的数据
因为servlet程序回传html页面数据是一件非常繁琐的事情.开发成本和维护成本都极高.
servlet回传HTML页面数据的代码;

public class PringHtml extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req,HttpServletRespone resp) throwsServletException,IOEception{
//通过响应的回传流回传html
resp.setcontentType(“text/html;charset=UTF-8”);
PrintWtiter writer=resp.getWriter();
writer.write("\r\n");
writer.write(" <html lang=“en”>\r\n");
writer.write(" \r\n");
writer.write("

\r\n"); writer.write(" Title\r\n"); writer.write(" \r\n"); writer.write(" \r\n"); writer.write(" 这是 html 页面数据 \r\n"); writer.write(" \r\n"); writer.write("\r\n"); writer.write("\r\n"); } } jsp回传一个简单html页面的代码; <%@ page contentType="text/html;charset=UTF-8" language="java"%> Title 这是html页面数据 jsp小结: 1.如何创建jsp的页面? 输入文件名敲回车即可. ![在这里插入图片描述](https://img-blog.csdnimg.cn/5a102f334c9a486dba129a2585050330.png) 2.jsp如何访问: jsp页面和html页面一样,都是存放在web目录下.访问也和访问html页面一样. 比如: 在web目录下有如下的文件 web目录 a.html页面 访问地址是===>>>http://ip:port/工程路径/a.html b.jsp页面 访问地址是===>>>http://ip:port/工程路径/b.jsp 二.jsp的本质是什么 jsp页面本质上是一个Servlet程序. 当我们第一次访问jsp页面的时候.Tomcat服务器会帮我们把jsp页面翻译成一个java源文件.并且对他进行编译,编译成.class字节码程序.我们打开java源文件不难发现其里面的内容是; ![在这里插入图片描述](https://img-blog.csdnimg.cn/1cbe44d71510420a8cd7f26ec3bcbeb9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc2hhbWFf,size_20,color_FFFFFF,t_70,g_se,x_16) 我们跟踪源码发现,HttpJspBase类.他直接继承了HttpServlet类.也就是谁,jsp翻译出来的java类,它间接继承了HttpServlet类,也就是说,翻译出来的是一个Servlet程序

在这里插入图片描述
总结:通过翻译的java源代码我们可以得到结果:jsp就是Servlet程序
大家也可以去观察翻译出来的额Servlet程序的源代码,不难发现.其底层实现,也就是通过输出流.把HTML数据传回给客户端.
public void _jspService(final javax.servlet.http.HttpServletRequest request, final
javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
final java.lang.String _jspx_method = request.getMethod();
if (!“GET”.equals(_jspx_method) && !“POST”.equals(_jspx_method) && !“HEAD”.equals(_jspx_method)
&& !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, “JSPs only permit GET POST or
HEAD”);
return;
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType(“text/html;charset=UTF-8”);
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("

Title\r\n"); out.write("\r\n"); out.write("\r\n"); out.write(" a.jsp 页面\r\n"); out.write("\r\n"); out.write("\r\n"); } catch (java.lang.Throwable t) { if (!(t instanceof javax.servlet.jsp.SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) try { if (response.isCommitted()) { out.flush(); } else { out.clearBuffer(); } } catch (java.io.IOException e) {} if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); else throw new ServletException(t);} } finally { _jspxFactory.releasePageContext(_jspx_page_context); } } 三.Jsp的三种语法 1.jsp头部的page指令 jsp的page指令可以修改jsp页面中一些重要的属性,或者行为 <%@ page contentType="text/html;charset=UTF-8" language="java"%> 1.1language属性表示jsp翻译后是什么语言文件.暂时只支持java 1.2contentType属性表示jsp返回的数据类型是什么.也是源码中 response.setContentType()参数值 1.3pageEncoding属性表示当前jsp页面文件本身的字符集 1.4import属性跟java源代码中一样.用于导包,导类 =======两个属性是给out输出流使用========== 1.5autoFlush属性 设置当out输出流缓冲区满后,是否自动刷新缓冲区.默认值是true 1.6buffer属性设置 设置out缓冲区的大小,默认是8kb 缓冲区溢出错误: ![在这里插入图片描述](https://img-blog.csdnimg.cn/848c6b4d7b5e438399fe762c468c7d76.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAc2hhbWFf,size_20,color_FFFFFF,t_70,g_se,x_16) 1.7.errorPage属性设置当jsp页面运行时出错,自动跳转区的错误页面路径. 1.8isErrorPage属性 设置当前jsp页面是否是错误页面.默认是false 如果是true可以获取异常信息 1.9session属性设置当前访问jsp页面.是否会创建HttpSession对象.默认是true 2.0 extends属性设置jsp翻译出来的java类默认继承谁 四.jsp中常用脚本 4.1声明脚本(极少使用) 声明脚本的格式是:<%!声明java代码%> 作用:可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块,内部类等, 练习 1.声明类属性 2.声明static静态代码块 3.声明类方法 4.声明内部类 代码实例: <%--1.声明类属性--%> <%! private Integer id; private String name; private static Map
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值