面试百试不爽的问题!
Servlet和jsp的区别
总的来说:JSP在第一次访问会变成Servlet然后被编译成class文件,然后被执行
1.Jsp当成是View层 Servlet用来做Controller
2.Servlet在Java代码中通过HttpServletResponse对象动态输出HTML内容
JSP在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容
3.Servlet能够很好地组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难、可读性差
JSP虽然规避了Servlet在生成HTML内容方面的劣势,但是在HTML中混入大量、复杂的业务逻辑同样也是不可取的
4.Servlet是被Context的类加载器加载的,所以重写Servlet需要重新部署Context,JSP有自己的加载器
JspCompilationContext
5.JSP封装了大量Servlet中的对象,例如Request,ServletContext,Session等,使用起来极其方便
JSP是 可视化文件,Servlet会被编译成class文件,前者可以拿任何一个编辑器修改,后者不行
扬长避短,让它们发挥各自的优势 即MVC架构
转发和重定向
1:转发是客户端不关心服务端具体做了什么,你只要给我返回就行了。所以url不变
2:重定向是客户端知道自己总共要访问两次,那就继续访问算了,所以url变化了。
因为转发和重定向的url是否变化,及访问次数,会涉及到使用地点。