JSP

来源:互联网 发布:ssh tunnel端口转发 编辑:程序博客网 时间:2024/04/28 14:50

为什么要使用JSP组件

因为Servlet生成动态页面比较繁琐,而使用JSP生成动态页面则比较便捷,因为其中的静态内容可以用HTML生成;实际应用中,Servlet是不会用来生成动态页面的,而是会用来接收来自JSP的请求,处理请求,然后调跳转到JSP页面把结果显示给客户端看
JSP与Servlet的关系?===>>JSP会被翻译成Servlet(JSP本质上就是Servlet)

Jsp的执行流程是什么?

JSP的执行过程:翻译-编译-实例化-提供服务翻译  jsp文件->Java文件编译  java->class实例化  创建servlet服务    调用_jspService(request,esponse)方法

JSP的本质就是Servlet,不过是服务器将JSP进行了翻译和编译;可以说,JSP也是一个Java类;

页面元素

  • 脚本元素
格式为==》 <%java代码%>  eg:<%System.out.println("这是脚本元素"); %>    服务器翻译脚本元素时,将把其中Java代码直接翻译到_jspService方法中,如果语法错误,将在浏览器中提示错误    _jspservice(HttpServletRequest,HttpServletResponse)
  • 表达式元素
格式为==》 <%=java代码%> eg:<%= request.getLocalAddr()%>     _jspservice(HttpServletRequest,HttpServletResponse)   使用out.print()输出
  • 模板元素
模板元素指JSP中静态HTML或者XML内容
  • 注释元素
格式为<%--JSP注释--%> JSP的注释只有在源代码中可见,翻译时已经忽略;```格式为<!--HTML注释--> HTML注释翻译时_jspService 翻译到java代码中格式为//java注释      _jspservice 使用out.write()输出
  • 声明元素
格式为==》 <%! 声明语句%>   eg:   <%! private String name="耶稣";            public void say(){            System.out.println(name+"你好帅!!!!!!");            }%>声明元素被翻译到Java类中,而不是_jspService方法中;声明元素不能用内置对象

九大内置对象

  • 内置对象指的是服务器已经声明并赋值的对象,可以直接使用;
request/response/page/pagecontext/application/exception/session/config/out对应的具体类型HttpServletRequest/HttpServletResponse/this/pageContext/ServletContext/Throwable/HttpSession/ServletConfig/JSPWriter

跳转两种方式

  • 响应重定向
- response.sendRedirect("b.jsp")   - 两次请求,不能得到原始的请求参数- url会改变- 可以转发给外部地址
  • 请求转发
- request.getRequestDispatcher("b.jsp").forward(request,response);- 一次请求,能得到原始的请求参数- url不会改变- 不可以转发给外部地址

请求属性的使用

- 传值,存在请求里- servlet/jsp->jsp/servlet- request.setAttribute(String,Object)- Object request.getAttribute(String)- request.removeAttribute(String)