tomcat处理jsp页面的流程
2012-07-25 21:14
246 查看
--菜鸟学习jsp之Tomcat处理jsp页面的流程:
客户请求*.jsp文件,服务器找到此*.jsp文件先将他翻译成*.java文件然此*.java文件编译成*.class文件,最后运行此*.class文件并且拼接成对应的jsp文件响应给客户。
在jsp中所有的java代码必须出现在scriptlet标签内即:<%! %>、<%%>和<%=%>,其实他们的作用就是告诉服务器如何去翻译jsp中的java。对于任何一个jsp文件会被服务器翻译成如下格式java文件(其中很多的初始化等代码没有写):
public final class jspDemo1_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
}
}
很明显服务器将一个jsp文件翻译成了一个java类,并且自动生成了三个方法,第一个是初始化用的,第二个是在服务器关闭或者jsp内容改变时执行的,第三个就是对客户的响应时执行的。此三个方法都可以直接在jsp文件中进行重写,但是必须写在<%!%>之中,可见此标签就是告诉服务器他里面的内容都是类的属性,学习过java的都知道一个对于一个类他的属性有:成员变量、成员方法、内部类、代码块等,所以在写jsp代码时如果要定义这些内容就应该用<%!%>标签指定。
当然一般情况下在一个jsp页面中很少去重写这些方法,都是直接写代码,上面说过对客户的响应服务器会调用_jspService方法所以jsp中需要在响应期间执行的代码都必须写在<%%>标签中,可见此标签法所有内容都会被服务器翻译成jspService方法的内容,这也是为什么在<%%>标签中不能定义方法、类、代码块原因(如果你还不知道为什么就先学习下java中方法定义的规则),因此在<%%>标签中一般定义:局部变量、语句等.
要想将对用户的响应显示在页面上,就必须使用jspWriter的对象out他是一个输出流,他的作用就是向页面输出内容具体的实现是out.writer("")或者out.print("");所以标签<%=%>会被翻译成此输出语句,同时他也是被放到了_jspService方法中。
最后总结下:在学jsp的过程中不必深究如上代码,只要知道这三个标签干什么用就行了,正确使用就行了。其实在真正的开放中在jsp中出现的会全部是标签,因为所有的代码都由一个一个的标签去表示,这些标签会告诉服务器该如何去生成代码。
以上只是本菜鸟的学习体会,各位大虾多多指点!
本文出自 “testmore” 博客,请务必保留此出处http://testmore.blog.51cto.com/4928920/942475
客户请求*.jsp文件,服务器找到此*.jsp文件先将他翻译成*.java文件然此*.java文件编译成*.class文件,最后运行此*.class文件并且拼接成对应的jsp文件响应给客户。
在jsp中所有的java代码必须出现在scriptlet标签内即:<%! %>、<%%>和<%=%>,其实他们的作用就是告诉服务器如何去翻译jsp中的java。对于任何一个jsp文件会被服务器翻译成如下格式java文件(其中很多的初始化等代码没有写):
public final class jspDemo1_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
public void _jspInit() {
}
public void _jspDestroy() {
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
}
}
很明显服务器将一个jsp文件翻译成了一个java类,并且自动生成了三个方法,第一个是初始化用的,第二个是在服务器关闭或者jsp内容改变时执行的,第三个就是对客户的响应时执行的。此三个方法都可以直接在jsp文件中进行重写,但是必须写在<%!%>之中,可见此标签就是告诉服务器他里面的内容都是类的属性,学习过java的都知道一个对于一个类他的属性有:成员变量、成员方法、内部类、代码块等,所以在写jsp代码时如果要定义这些内容就应该用<%!%>标签指定。
当然一般情况下在一个jsp页面中很少去重写这些方法,都是直接写代码,上面说过对客户的响应服务器会调用_jspService方法所以jsp中需要在响应期间执行的代码都必须写在<%%>标签中,可见此标签法所有内容都会被服务器翻译成jspService方法的内容,这也是为什么在<%%>标签中不能定义方法、类、代码块原因(如果你还不知道为什么就先学习下java中方法定义的规则),因此在<%%>标签中一般定义:局部变量、语句等.
要想将对用户的响应显示在页面上,就必须使用jspWriter的对象out他是一个输出流,他的作用就是向页面输出内容具体的实现是out.writer("")或者out.print("");所以标签<%=%>会被翻译成此输出语句,同时他也是被放到了_jspService方法中。
最后总结下:在学jsp的过程中不必深究如上代码,只要知道这三个标签干什么用就行了,正确使用就行了。其实在真正的开放中在jsp中出现的会全部是标签,因为所有的代码都由一个一个的标签去表示,这些标签会告诉服务器该如何去生成代码。
以上只是本菜鸟的学习体会,各位大虾多多指点!
本文出自 “testmore” 博客,请务必保留此出处http://testmore.blog.51cto.com/4928920/942475
相关文章推荐
- nginx 配置 使jsp页面转向tomcat处理
- 使用tomcat 来处理jsp页面
- 在myeclipse中代码修改不起作用:当在myeclipse中修改处理方法的代码时,重新发布Tomcat,在运行时,jsp页面显示内容没变,还是按修改前的代码执行
- Spring4.1.0 - SpringMVC第一步,Tomcat服务器端正常,客户端无法响应JSP页面问题处理
- Tomcat是如何处理jsp页面的
- jsp查看页面是否被Action处理
- HTML跳转jsp页面,中文乱码处理
- 使用Eclipse修改JSP页面需要重启tomcat的解决方法
- Tomcat请求处理流程
- jsp与javascript结合用以处理confirm确认达到传递参数到另一个页面的作用
- 后台传xml到jsp页面处理
- JSP页面处理日期格式
- 遇到Tomcat 6.0.20里对于jsp:param处理的微小区别
- 在JSP表单提交中怎样在Servlet中处理文件上传并且获取JSP页面传过来的一些参数
- Tomcat 下,JSP文件修改后,重新部署,页面不变化的问题
- 静态页面提交post到jsp处理并转到页面
- 在jsp中,获取页面中中文输入的值乱码问题解决。修改tomcat的编码问题
- javaweb 与jsp页面的交互流程 (初次接触时写)
- asp.net 服务器处理页面流程
- 测试Nginx 和 Tomcat 高并发情况下处理静态页面的性能