JSP重难点



JSP重难点

JSP介绍

 

JSP  java server page java服务器端网页)

jsp:html中嵌套写java代码             相比servlet更简单 

servletjava代码中嵌套写html代码       复杂

JSP它的本质是Servlet

<% 

书写java代码

%>

JSP可以放置在WEB应用程序中除了WEB-INF及其子目录 外的任何其他目录中。

JSP的运行原理:jsp本质上还是一个Servlet

JSP原理:每个jsp页面在第一次访问时,JSP引擎先将它翻译成Servlet源程序,接着再把这个servlet源程序编译成class文件,然后由web容器装载。

备注:虽然jsphtml中写java程序,但是推荐尽量不要出现java程序,尽量都使用表达式语言,如ELJSTLweb框架标签(Struts标签或spring MVC标签)

 

 

隐含对象:无需声明就可以直接使用的对象

JSP隐式对象(不用声明创建就可以直接当对象使用)

1.request           httpServletRequest对象

 

    2.session      httpSession对象  代表浏览器和服务器的一个会话

 

    3.application      ServletContext对象  代表当前web应用,能获取初始   

4.response          httpServletResponse对象

 

    5.pageContext       PageContext对象  页面上下文,可以从该对象获取其             它八个对象,获取当前页面信息(自定义标签时使用)

 

    6.config      当前jsp对应的ServletConfig对象(开发中几乎不使用)

 

    7.out               JspWriter对象 调用out.println()方法打印到浏览器中

 

    8.page             page=this代表当前jsp对应的Servlet对象引用,类型   Object只能使用Object的方法  (开发中几乎不用)

 

9.exception          只有在声明了page指令的isErrorPage="true"时才   可以使用

PageContextRequestHttpSessionServletContext为四种域对象

pageContext:作用范围是当前页面

request:作用范围是转发页面之间

httpSession:作用范围是同一次会话

servletContext:当前web应用共享

 

JSP语法:

 

    1.模板元素  即固定的静态页面 html代码

    2.jsp输出表达式  <%= %>

    3.jsp (java)脚本片段 <%  java代码。。。  %>

    4.jsp的声明  <%! %>  可以声明方法    但是jsp声明几乎不使用

    5.jsp注释    <%-- jsp注释  --%>

 

请求重定向和请求转发:非常重要

本质区别:请求转发只发生了一次请求,而重定向则是向服务器发出了两次请求

 

具体区别:

1.请求转发的地址栏不发生改变,重定向会发生改变

2.请求转发转发中最终的servlet里的request对象和最初的那个是同一个对象,请求重定向则不是同一个对象

3.请求转发只能转发到当前web应用的资源,请求重定向可以任何 资源

4.请求转发:/代表的是当前web应用的根目录路

http://localhost:8080/project/WebRoot

              请求重定向:/代表的是当前站点的根目录

              http://localhost:8080/ 

                          

举例说明:你找我借钱,我没钱,我就找小张借钱然后再把钱给你,这就是请求转发;你找我借钱我说我没钱说小张有钱,我让你去找小张借钱,这就是请求重定向。请求转发你只发出了一次请求,请求重定向你就发出了两次请求。你说多丢人,所以如果能转发就尽量转发。

 

特殊情况:需要重定向

1.登入模块

2.防止刷新重复提交表单

 

JSP中文乱码解决方案

 

  解决方案:

  第一处理级别:修改jsp的编码模板 使 pageEncodingcharset都为utf-8;(修改jsp模板)  ---jsp页面显示中文

 

  第二处理级别:获取参数时使用request.setCharset("utf-8");  对于post请求有用   ---获取参数时候

 

  第三处理级别:修改tomcatserver.xml文添加useBodyEncodingForURI="true"                     属性。---全局处理

 

  中文乱码问题最好是使用过滤器来解决。

 

JSP: page指令、include指令、JSP标签

  比较简单随便了解即可。

 

 

总结: / 代表的含义:

1.如果是服务器发起的: /代表web 根目录

2.如果是浏览器发起的: /代表站点

 

你可能感兴趣的:(JAVA,WEB)