版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/panhaigang123/article/details/79627587
Servlet的生命周期
1、创建servlet实例(创建对象) 默认在第一个请求到来的时候创建(也可以设置成加载就初始化)
2、初始化(init()) 初始化参数
3、调用service() 执行doGet() doPost()
4、调用destroy() 销毁 比如应用重新加载、或服务器关闭
get提交和post提交的区别
get一般用于从服务器上获取数据 post一般往服务器上推送数据
请求的参数的位置不同
get的参数是拼接在url后 在浏览器地址栏可见
post是放在HTTP包的包体中
post相对于get来说是比较安全的
能提交的数据的区别
get只能提交的数据只能是文本,且大小不能超过1024个字节
post不仅可以提交文本还可以提交二进制文件
servlet对他们的处理不同
get是进入doGet()方法
post是进入doPost()方法
jsp与servlet的区别
jsp的本质就是一个servlet 他会被容器转化成servlet,在编译成class文件 调用_jspService()处理请求
jsp注重的是页面展示 servlet注重的是流程控制和事务处理
doPost与doGet方法中的两个参数是什么
HttpServletRequest:封装了与请求的相关的信息
HttpServletResponse:封装了与响应相关的信息
request.getAttribute()和request.getParameter()
request.getAttribute()
有setAttribute()方法
只能获取setAttribute()里的值
getAttribute获取到的是object类型
当在一个页面通过setAttribute()设入一个对象,请求转发到另一个页面是可以通过getAttribute()取出设入的对象
当然也可以使用session 只是session和request的生命周期是不一样的
request.getParameter()
没有setParameter()方法
可以获取form表单或者是url向另一个页面或者是servlet传递参数的数据
获取的只能是字符串
jsp有哪些内置对象,作用是什么
request====》包含了用户端请求的的信息
response=====》包含服务器传回客户端的响应信息
session======》解决了http协议的无状态性 在服务器中保存了用户的会话信息(用来判断用户是否登录,购物车功能)cookie保存在客户端
pageContext======》由容器来创建对象和初始化 管理页面上下文 通过pageContext可以获取out、request、reponse、session、application等对象
application======》可以实现应用程序的资源共享
out=========》向客户端输出数据
config=======》用于存放jsp编译后的初始化数据(服务器的配置信息)
page=======》jsp页面本身 在当前jsp有效
exception======》显示异常信息 只有在包含了page指令中设定isErrorPage="true"的页面才能使用
四种会话作用域
page:当前页面
request:一次请求中
session:一次会话中
application:服务器从启动到停止
jsp中动态包含和静态包含
动态包含
动态包含使用<jsp:include page="head.jsp"> 使用page属性实现 在body标签中使用 <jsp:include page="head.jsp"></jsp:include>
静态包含
静态包含使用<%@include file="head.jsp"%> 使用file属性实现 在body标签中使用 <%@include file="head.jsp"%>
原理不同
静态包含直接将jsp的内容嵌入到访问的jsp 简单的理解就是将两个jsp的代码写在一起
动态包含将两个jsp分别翻译成不同是servlet 将包含的servlet输出的内容包含(发送了一个请求给被包含的页面 获取到了响应的html
当向这个页面发出请求后,会转发到被包含的那个jsp页面去执行,执行完毕后接着执行本页面的代码)
forward和redirect的区别
请求的次数不同
请求转发:1次
重定向:2次
跳转的方式不同
请求转发:服务器内部跳转 浏览器不知
重定向:告知浏览器 发生二次跳转
地址不同
请求转发:地址不变
重定向:变化为第二次地址
参数不同
请求转发:参数保留
重定向:参数失去
跨域访问不同
请求转发:只能在同一个项目跳转
重定向:可以跨域访问
效率上
请求转发:效率高
重定向:效率低
jsp的常用的动作指令和作用
jsp:include====》在页面被请求的时候引入一个包含
jsp:useBean====》实例化一个对象
jsp:setProperty=====》设置对象的属性
jsp:getProperty=====》获取对象的属性
jsp:forward=====》请求转发
jsp的3中跳转方式
response.sendRedirct() 重新发送请求
response.setHeader() 重新发送请求但可以设置等待的时间
<jsp:forward page="跳转的页面"> 请求转发 服务器的跳转
servlet过滤器的作用《取你所想取》
在请求到达servlet之前,执行过滤器,过滤器决定是否执行(可以进行权限控制) 可以提前设置一些参数(比如在执行action前设置统一字符集)
=======拦截器《拒你所想拒》======
当你在执行一个方法,在这个方法前或方法后执行一些方法 (防止重复提交)
servlet监听器的作用
对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码 分为生命周期监听器和数据变化监听器
(统计在线人数(监听session)、网站的访问量(request))
描述jstl
jstl是一个jsp标签集合,他封装了jsp应用的核心功能,比如核心标签(core) 格式化标签(fmt) 函数(fn)
jstl还提供了实现自定义标签功能 方便我们的页面控件编写
实现servlet单线程模式
jsp修改page指令 <%@ page isThreadSafe="fase"%> 此时编译成的servlet实现了SingleThreadModel接口
介绍el表达式
el表达式一般操作的是作用域(application session request page)中的属性 获取上下文${pageContext.request.contextPath} 使用${}
tomcat如何调优
对tomcat内存进行优化(修改catalina.bat的相关参数)
禁用DNS查询(直接使用IP地址访问)
修改最大线程连接数
设置超时机制
tomcat部署的方式有几种
1、可以将web项目文件拷贝到webapps目录中
2、在tomcat中的conf目录下修改server.xml文件 在host节点中添加<Context>标签 并指向项目所在路径
3、可以在tomcat中conf\Catalina\localhost 目录下添加一个xml文件 文件名可以随意取 并写入一个<Context>标签 并指向项目所在路径