DRP之JSP HelloWorld

         由于修改Servlet之后,需要重新生成class文件,并且重启服务器,然后打开或刷新网页,才能看到修改的效果,过程非常繁琐,不便捷.如何做到所见即所得,我一修改,一刷新网页,效果立马出现.所以JSP产生了.      

         JSP,java serverpages.特点,拥有和Servlet一样的特性和优点,因为JSP实际就是Servlet.Servlet比更有优势的是,可以在HTML代码中直接内嵌Java代码.他的操作过程就是,JSP Engine先将JSP程序转换成Servlet代码,然后再就是Servlet的操作了,编译成class,载入执行.并且,只有当客户端第一次请求JSP,才需要将其转换、编译.

         写个最简单的HelloWorld.jsp,见识一下什么是JSP.文件名为HelloWorld.jsp,内容:

	<html>
		<head>
			<title>HelloWorld</title>
		</head>
	
		<body>
			<%
				out.println("HelloWorld");
			%>
		</body>
	</html>

 启动服务器,输入地址,界面运行效果:

DRP之JSP HelloWorld_第1张图片

          是不是超简单,可是内部是如何运作的?

         首先,找到tomcat中的conf文件夹下的web.xml,其中有两段Servlet的配置标签,查找和Servlet是一样的.

 <!-- The mappings for the JSP servlet -->	    <servlet-mapping>
	        <servlet-name>jsp</servlet-name>
	        <url-pattern>*.jsp</url-pattern>
	        <url-pattern>*.jspx</url-pattern>
	    </servlet-mapping>
 <servlet>	        <servlet-name>jsp</servlet-name>
	        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
	        <init-param>
	            <param-name>fork</param-name>
	            <param-value>false</param-value>
	        </init-param>
	        <init-param>
	            <param-name>xpoweredBy</param-name>
	            <param-value>false</param-value>
	        </init-param>
	        <load-on-startup>3</load-on-startup>

    </servlet>

         在第一段的servlet-mapping,可以知道,只要是*.jsp*.jspx的都可以找到servlet-namejsp,servelt-namejsp,找到的类是org.apache.jasper.servlet.JspServlet.这个类在哪呢?

          lib下可以找到jasper.jar,然后打开可以找到这个class,但是吧,打开乱码.看来不是这里.

DRP之JSP HelloWorld_第2张图片

这个文件夹下有个xml文件,有一段内容是这样的.

 <mbean         name="JspMonitor"
          description="JSP Monitoring"
               domain="Catalina"
               group="Monitoring"
               type="org.apache.jasper.servlet.JspServlet">

         不大知道这段代码,但是类型是我要的类,domain,范围或者域名是Catalina.而在work文件夹下是有一个Catalina的文件夹的.

         所以在tomcat根目录下,找到work文件夹,这个文件夹的作用是用来放置由JSP生成的各种Servlet文件.在这个路径下一直进去,就可以找到HelloWorld_jsp.java.class文件..java文件中就是Servlet代码.

DRP之JSP HelloWorld_第3张图片

          打开.java文件,.class打开是乱码._jspService该方法中,找到一段代码,就是将我们的.jsp文件中的代码全部进行了处理,然后输出显示.

DRP之JSP HelloWorld_第4张图片

         只要我立马修改了JSP中的代码,不用重启Tomcat服务器,刷新网页,这里就会自动生成相应的.java代码,并编译,所以效果就出来了.             

    如修改了HelloWorld的显示代码,out.println("HelloWorldThis is JSP"),然后刷新网页,

       

    打开的文本编辑器就提示HelloWorld_jsp.java被修改了,内容变成了这样.


            .java.class文件的修改日期变为当前日期和时间,也能表明他们被修改过了.


       浏览器的运行效果也跟着改变.


           由此可以大概了解一下JSP的运行操作,以及它和Servlet就是一样的东西的事实.用Servlet就可以接收客户端的请求,处理,返回结果,只是不用工具时操作麻烦,而JSP完美的解决了这个问题.看来,任何东西都是越变越方便的,事物都是发展着的.

你可能感兴趣的:(DRP之JSP HelloWorld)