1、JSP九个内置对象
- request:封装客户端请求
- response:封装服务器对客户端的相应
- pageContext:通过改对象获取其他对象
- session:封装当前用户会话信息
- application:封装服务器运行环境的对象
- out:输出服务器响应的输出流
- config:Web应用的配置对象
- page:JSP页面
- exception:封装页面抛出的异常
2、JSP四种作用域
- page:代表一个页面相关的对象和属性
- request:代表与客户端发起的一个请求相关的对象和属性(可跨越多个页面)
- session:代表某个用户与服务器建立的一次会话相关的对象和属性
- application:代表与整个web应用程序相关的对象和属性
3、session的工作原理
session实质为存储在服务器上的散列表格文件,类似Map,键为用户的sessionid,用户向服务器发送请求时会带上这个sessionid,这样就可以从中获取对应的值了。
4、session 和cookie的区别
session:是服务端保存数据的一种数据结构,用于跟踪用户状态
cookie:是客户端保存用户信息的一种机制,用来记录用户信息
5、servlet的生命周期<通过javax.servlet.Servlet接口中的init()、service()、destory()方法表示>
- 加载和实例化:Servlet容器通过类加载器加载Servlet类,成功加载后,通过反射API来创建Servlet实例,此时调用Servlet的默认构造方法(不带参数的构造方法),因此在编写Servlet类时,不能提供带参数的构造方法。
- 初始化:容器调用Servlet的init() 方法初始化这个对象,用于对象在处理客户端请求前完成一些初始化工作,如数据库链接、获取配置信息等。init()方法只能调用一次,且可抛出两种异常
ServletException:用于指明一般的初始化失败,如无法找到初始化参数
UnavailableException:用于指明Servlet实例不可用,如数据库服务器无法建立连接等
- 请求处理:调用Servlet的service()方法对请求进行处理,但在调用之前,需确保init()方法执行成功。Service实例通过ServletRequest对象获取客户端的相关信息和请求信息,对请求进行处理后,调用ServletResponse对象设置相应信息
- 服务终止:调用实例的destory()方法,释放所有资源,保存数据到持久化设备中,且destory()方法只能调用一次
6、常见攻击,已经如何避免
- sql注入:
- XSS攻击-跨站脚本攻击:攻击者向有XSS漏洞的网站输入恶意HTML代码,当用户浏览该网站时,这段HTML代码会自动执
行,如盗取用户账号信息。<对输入进行过滤校验,对输出进行编码>
- CSRF攻击-跨站请求伪造:攻击者通过伪造用户的浏览器的请求,向访问一个自己曾经认证过的网站发送信息,如进行转账、发布信息等<验证HTTP Referer字段、请求地址中添加token并验证>