首页 > 代码库 > Jsp

Jsp

  • 1. JSp:由Java代码和HTML混合在一起的文件,其中的动态内容用Java代码,固定不变用html文件

JSp放置在除了WEB-INF及其子目录外的其他任何的目录中,JSP访问方式和HTML方法一样

JSP运行的原理: JSP的本质上一个Servlet的代码,服务器将找到的Hello.jsp 代码用Servlet容器将其转译成Hello.java代码,编译生成Hello.class 文件最后将响应结果回送给客户端

  1. 如何查找经过Tomcat服务器生成将Hello.jsp 转译成class文件:

                          1.找到工作空间:如我的F://IO/WEB

                         2.F:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 

        这就是Tomcat映射的目录,在这个目录中有一个work目录和一个wtpwebapps目录

        work目录中顺着:work\Catalina\localhost\项目名字\org\apache\jsp 就可以找到你的项目对应的java文件和class文件(注意要访问jsp后才会出现!)

技术分享

  • 2.九大内置对象:不需要声明,就可以使用其中 request,response.out. seesion ,page,application ,exception,pageContext

      PageContext:页面上下文,是PageContext的一个对象,从中获取其他对象,同时获取到当前页面的其他信息

      application:获取当前页面的初始化信息

      config:Servle初始的对象,必须要在web.xml 获取对jsp进行映射

  • 3.属性作用范围:

      pageContext:属性作用于当前JSP页面

      Seession:作用于一次会话

              JSP的注释<!-- -->可以组织Java代码执行

  • 4.请求转发 Vs 请求重定向:
    •   1.SendRedirect 方法实现请求重定向  Vs ServletContext.getRequestDispatcher(加入绝对路径) .forward +ServletRequest.getRequestDispatcher(相对路径).forwrad()

       href超链接客户端跳转,URL会变化

技术分享

 


 

  • 2.response重定向和forward跳转的区别

                     1.response:执行完所有的代码再跳转到目标页 2跳转到目标页后浏览器的URL会改变 3在浏览器中重定向 4可以跳转到其他服务器上的页面 eg:从360---百度。重定向发现URL会发生变化,重定向是两次请求不需要/,转发只是一次请求需要/

技术分享

                    最终页面是testServ,明显 重定向中浏览器的url发生变化,转向没有发生变化;

                    2. forward跳转:1直接跳转到目标网页 其后的代码不再执行 2跳转到目标页后URL不变 虽然URL显示的是index1.jsp 但其实你看的index2。jsp的内容 3在服务器端重定向 4无法跳转到其他服务器上的页面;forwar是服务器内部跳转,浏览器看到url还是跳转前的                           URL,如下URL没有变化

技术分享

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

       4.转向/ 当前WEb根目录      重定向/ 当前WEB的站点目录

 


 

 

      结果显示:属于自己使用 ServletRequestDispathcher.forward(request,response)进行的页面的请求转向

 

1. 请求test.jsp页面编写 浏览器输入地址:

 

技术分享View Code

 

2.href跳转到的Servlet中 输入路径中加入/path  转发浏览器只发了一次请求

 

技术分享View Code

 

        3.重定向跳转的方向:不需要/   浏览器发生两次请求

 

1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2         // TODO Auto-generated method stub
3         System.out.println("redirect methods");
4         
5         String path="testServ";
6         // 不需要/ 
7         response.sendRedirect(path);
8         
9     }

 

技术分享

 

 


 

  • 3.问题一:为什么建立Servlet类时候 web.xml没有产生 <servlet-mapping>文件   使用Tomcat 7.0之上的版本

查看文档,发现这是Tomcat7.0新特性,在servlet.java页面上自动生成一个 @webServlet 等价于web.xml上的<Servlet-name>和映射

注意  1.如果页面中存在@webServlet 在web.xml不需要再进行写 <servlet-mapping> 代码   ,否则Tomcat出现无法运行问题

注意  2.如果将@webServlet去掉,在web.xml写上自己映射,发现jsp 中<a href="">标签无法进行跳转,可能Tomcat7.0版本之上一个新特性,这样的话,建立了一个servlet不 需要web.xml上  方便大家恩。

 

Jsp