关于servlet与jsp
Posted ehow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于servlet与jsp相关的知识,希望对你有一定的参考价值。
servlet与jsp的区别
1、先有servlet,再有jsp。servlet设计出来时,功能很强大,体系设计也很先进,但是,它输出html采用了老式的CGI方式,一句一句地输出html,这样导致了编写和修改html很不方便;而后sun公司推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到html语句中,这样大大简化了网页的设计和修改,新型的网络语言ASP、php、JSP等,都是镶嵌型的script脚本语言
2、两者的创建方式不一样:
servlet有三种创建方式:
1、实现Servlet接口,重写service方法
2、继承GenericService类,重写service方法
3、继承HttpServlet(常用),重写doGet()、doPost()方法
jsp创建,直接创建一个jsp文件,与html差不多,只是需要在jsp文件的第一行引入page标签<%@page contentType=”text/html” pageEncoding=”UTF-8”%>
3、servlet完全由Java代码构成,擅长于流程控制和事务处理,通过servlet生成的动态网页很不直观;JSP由html代码和jsp标签构成,可以很方便地编写动态网页,因此在实际应用中,采用servlet来进行流程控制,使用jsp来生成动态网页
4、mvc设计模式中,jsp位于视图层,而servlet位于控制层
5、jsp是servlet技术的发展,本质上就是servlet的简易方式
6、servlet的应用逻辑在Java文件中,并且完全和表现层的html代码分开,而jsp是java和html组合而成的.jsp文件中
7、jsp侧重于视图,servlet侧重于逻辑控制
servlet是线程安全的吗
1、servlet默认是单例模式,在web容器中只有一个实例,所以当多个线程同时访问一个servlet时,servlet是线程不安全的
2、但是,web容器也可以为每一个请求创建一个servlet实例,只需要该servlet实现SingleThreadModel接口即可
有两点:
1、每一个servlet都会在被访问时创建出一个对象实例,占用内存资源
2、每个srvlet同时只能支持20个线程的并发访问,web服务器会自动挂起排在20之后的访问线程
什么情况下调用doGet()和doPost()方法
当以get方式发送请求时,将会调用doGet()方法,页面默认都以get方式请求后台资源
当以post方式发送请求时,将会调用doPost()方式,post请求只有在form表单的action指定为post请求或者ajax请求时指定请求方式为post时才会发送post请求
以上是关于关于servlet与jsp的主要内容,如果未能解决你的问题,请参考以下文章
内嵌tomcat,启动报错:java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
覆盖 JSP servlet(过滤器“*.jsp”)以包装身份验证模型
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/Servlet