知识整理——Servlet
来源:互联网 发布:淘宝网廷长收货 编辑:程序博客网 时间:2024/06/09 14:47
0,三层架构:
单一职责原则,职责和功能分离开,实现高内聚、低耦合。web:接受数据,封装成bean,传输数据,返回响应service:处理业务逻辑dao:与数据库交互优点: 1,开发人员只关注某一个层面 2,很容易的用新的实现来替换原有层次的实现,降低层与层之间的依赖 3,利于标准化 4,各层逻辑复用 5,结构更加明确 6,便于维护缺点: 1,降低系统性能 2,导致级联修改 3,增加成本(开发时间和人员增加)
1,Tomcat
目录bin :存放可执行文件 conf :存放配置文件lib :存放jar包logs :存放日志temp :存放临时文件webapps :存放web项目work :存放jsp转换成html的中间产物
2,什么是Servlet
1,用Java编写的服务器端程序。2,主要功能在于交互式地浏览和修改数据,生成动态Web内容。3,狭义的Servlet是指Java语言实现的一个接口,4,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。5,Servlet运行于支持Java的应用服务器中。6,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
JSP概念
Servlet是j2ee提供的动态资源开发技术,是以java的程序的形式进行开发,在java中书写HTML标签是一件十分头疼的事情,所以人们开发出了JSP,看起来像是HTML一样,但是通过服务器的编译最终可以生成Servlet,jsp页面其实就是一个servlet。
动态网页技术
jsp页面翻译成.java,然后再编译成.class,最后再运行这个.class文件
jsp = html + java
jsp页面其实就是一个servlet
servlet能做的事情jsp全能做。
servlet和jsp需要部署在服务器上才能运行。
servlet和jsp不需要写main方法运行。
浏览器只能打开html,需要通过服务器Tomcat将java转换成html,才能打开。
3,Servlet的作用:
可以让服务器调用处理请求的类。
4,一个类变成Servlet的方法:
1,实现一个Servlet接口 service(ServletRequestreq,ServletResponse res); 处理请求的方法。 destroy(); 销毁 getServletConfig();返回ServletConfig 对象。 getServletInfo();返回Servlet对象的信息。 init(ServletConfig config);初始化。2,继承一个抽象类HttpServlet public class ServletName extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {} public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {} }
**5,servlet的生命周期:
servlet创建、初始化只一次(因为单例),执行多次销毁:正常关闭服务器 重新部署servlet的对象是单例: 在web项目整个运行期间,每一个servlet类只会有一个对象存在。1,创建 :(默认情况)servlet第一次被访问的时候创建2,初始化 : 创建以后立刻初始化,调用init(ServletConfig config)3,执行 : 每次被访问的时候都会调用service(ServletRequest req,ServletResponse res);4,销毁 : 正常关闭服务器,服务器自动重新部署,手动重新部署服务器的时候会调用destroy()进行销毁。由于对象单例,可能产生多线程安全问题,解决办法: 1,减少成员变量的使用 2,加锁synchronized 3,使用安全性接口6,客户端向服务器发请求和传参,客户端向服务器发送请求可以是get方式也可以是post方式.所以传参也分为get方式下传参和post方式下传参。 1,get方式下传参: a.浏览器中输入地址(URL)然后回车 b.超链接 <a href="param?name=haha&age=20"></a> c.页面中引入的css样式文件 d.页面中引入的js的文件(javascript) e.<img src="image/a.jpg" /> e.<img src="register" /> f.form表单中method="get" g.ajax中可以设置异步提交请求的方式为get 2,post方式下传参: a.form表单中method="post" b.ajax中可以设置异步提交请求的方式为postget/post区别:主要体现在所传参数上面 get方式传参的特点: 1.参数直接放在url后面。 2.从浏览器的地址栏里面可以直接看到所传的参数。 3.参数的长度有限制,不能把一个很长的数据通过get方式传参。(与浏览器种类有关) post方式传参的特点: 1.参数放在请求体部。 2.浏览器的地址栏中看不到所传的参数。 3.因为参数不用出现在地址栏里面,所有参数长度是没有限制的。
7,servlet中接收客户端传过来的参数:
form: action="/url" input标签中 获取 key-value a : href="/url?key1=value&key2=value"
8,
请求发送的过程 浏览器-->tomcat服务器-->web.xml-->servlet.java-->代码响应的过程 代码-->servlet.java-->服务器-->浏览器
9,servlet中的跳转:
1,服务器内部跳转: RequestDispatcher rd =req.getRequestDispatcher(page).forward(req, resp); 跳转: rd.forward(req, resp); 把前一个servlet的out输出流数据刷新 rd.include(req, resp); 不会刷新 特点: 1.浏览器地址不变 2.请求链不断开 3.request,response对象都是同一个。2,客户端重定向: resp.sendRedirect(page); 特点: 1.地址栏数据会发生改变 2.请求链断开,相当于重新发送请求 3.request,response对象都是浏览器新发出的
10,servlet的三大容器:request、session、application
在多个servlet中进行数据的传递。(用容器只能传到jsp页面)request :HttpServletRequest 一次请求=请求+响应 生命周期太短session : HttpSession(可能线程不安全) 一次会话=多次请求 获取: request.getSession(); 钝化:当服务器正常关闭,但session没有到正常死亡时间,会写到文件中 活化:服务器启动,会加载work下的.sess文件,把文件中的session对象加载到服务器中 cookie: 保存用户访问的信息数据,因为http协议的访问是无状态访问,不会保存访问的记录。 session和cookie区别: session是保存在服务器端的一个对象,客户端没有。 cookie在客户端是以本地文件的形式存在的,在服务器端是以java对象的形式存在。 session是把数据保存在服务器端的内存里面。 cookie是把数据保存在客户端的文件里面。 session在多个servlet中进行数据的传递 cookie保存用户访问的信息数据application :ServletContext(可能线程不安全) 所有页面 获取:session.getServletContext();
11,Filter(过滤器) : 拦截请求
编码的转换信息的过滤权限的判断登录的验证<filter> <filter-name>encodingFilter</filter-name> <filter-class>com.briup.filter.EncodingFilter</filter-class></filter><filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
12,监听器(Listener) :监听web中的一些事件的发生,如果事件发生,这个监听器就会调用某些方法处理.
如何去写一个监听器: 1.实现一个接口。 2.在web.xml文件中进行配置。<listener> <listener-class>com.briup.listener.RequestListener</listener-class></listener>Servlet API中定义了8个监听器接口,可以用于监听ServletContext,HttpSession,ServletRequest对象的生命周期事件。ServletContextListener 监听Servlet上下文对象初始化或者被销毁ServletContextAttributeListener 监听Servlet上下文中的属性列表的变化HttpSessionListener 监听Session生命周期HttpSessionActionListener 监听session被钝化或者激活(活化)HttpSessionAttributeListener监听Session属性列表发生的变化HttpSessionBindingListener 监听Session中是否有对象绑定或者删除,该对象要实现这个接口//只有这个是该对象实现,其他的都是先写监听器的实现类ServletRequestListener 监听ServletRequest对象声明周期ServletRequestAttributeListener 监听ServletRequest属性列表发生的变化
阅读全文
0 0
- 知识整理——Servlet
- Java知识整理——Servlet&JSP
- servlet相关知识整理
- 知识整理——AJAX
- Java知识整理(十七)之Servlet
- 知识学习——Servlet基础
- 笔记本知识整理——linux
- CSS3知识整理——(一)
- Java知识整理——基础知识
- Java知识整理——线程
- Java知识整理——容器
- Java知识整理——垃圾回收
- Java知识整理——异常处理
- Java知识整理——JDBC
- Java知识整理——反射
- Ajax知识整理稿件——1
- 【Lua知识整理】——Lua栈
- 黑马程序员—学习小心知识整理
- 多重栈的实现
- 微信的多客服功能放在自定义菜单里面 这个功能如何实现?
- PHP使用header设置浏览器缓存
- 中国第二代支付清算体系
- 【软工视频】需求分析
- 知识整理——Servlet
- Java如何将处理完异常之后的程序能够从抛出异常的地点向下执行?
- 清理Ubuntu系统的缓存、垃圾、多余内核
- centos7 利用firewalld自建NAT网关
- 递归是怎么一步步实现的
- netty系列2-Linux网络IO模型
- 第三周 【项目4- 顺序表应用】
- Lesson5 接口2
- Software Testing Automation Tips.pdf 英文原版 免费下载