组件
- JavaEE == JavaWeb,用要导jar包(用人家写好的功能)
1. 组件
- 组件是类
实现特殊功能的类 - 如何成为组件
一般 实现接口 继承父类
2. Servlet组件
2.1 servlet功能:
- servet组件:专门用来处理用户请求的组件
组件:可以实现特殊功能的类
2.2 怎么让一个类成为一个servlet组件
1.继承
2.用于处理什么样的请求\输入什么样的地址才由servlet来处理
配地址的两种方式(二选一):
- Webservlet注解(自己开发使用)
@WebServlet("地址")
- web.xml(从jar包引入别人的servlet)
<servlet>
<servlet-name>booklistservlet</servlet-name>
<servlet-class>com.maven.controller.BookListServlet</servlet-class><!--类的完全限定名-->
</servlet>
<servlet-mapping>
<servlet-name>booklistservlet</servlet-name>
<url-pattern>/book/list</url-pattern>
</servlet-mapping>
3.代码写哪:
对象:requset、response
(1)重写service,不用main方法
HttpServletRequest:请求对象。封装各种请求信息
HttpServletResponse:响应对象,用于响应到浏览器的内容
(2)重写doGet、doPost(实际开发使用,节省servlet)
- 如果不重写service:
调用父类service方法
父类service会判断当前请求是get还是post
如果是get请求就会转到doGet方法
如果是post请求就会转到doPost方法
如果不重写service就要重写doGet或doPost
实际开发中,禁止重写service,要重写doGet或doPost
请求方式
客户端向服务器的请求方式:get获得、得到,post邮寄
区别
get请求
- method请求默认为get
- get请求为一般请求,get请求本身不会携带任何数据包,
- 如果要进行数据传输,只能通过地址进行数据传输:地址?数据名=数据值&数据名=数据值 (原则上可以写无数对)
- 但是通过地址传递数据 只能传递文本格式的数据:字符、字符串、数字,对于图片、文件等数据无法通过地址进行传递
- get请求对传数据的大小并没有限制,但是由于数据通过地址传递,浏览器的地址栏有长度限制,在传递数据时
post请求
- post请求:请求的同时会携带一个数据包进行传递,数据会被封装到数据包中:数据不会暴露在地址栏上被看到
- 数据包中可以传文本数据,也可以传递文件数据
- post 请求对传数据的大小没有限制
两种请求,servlet中接收数据的方式一样:request.getParameter(“name值”)
区分
- 如何判断是get请求还是post请求?
get:
1.直接在浏览器输入地址按回车
2.a标签的链接跳转
3.重定向(第二次请求的那一刻是get请求)
4.form表单 method=get
5.ajax type=get
post:
1. form表单 method=post
2.ajax type=post
2.3 访问地址
- 访问地址:主机:端口号/application context/servlet配置的地址
若端口号为80则可以不用输入
若application context仅设为"/",可以不用输入
2.4 servlet生命周期
- 加载类:创建对象前,先加载类。类加载器(没有类加载,对象创建不出)
- 实例化:伴随初始化:init()
- service::
访问doGet、doPost,由父类的service确定是get方法还是post方法;重写service不会调用父类的service。
重写service和doget时,调用service。不重写service,才会调父类的service,才会转到goGet. - destroy:销毁
3. 过滤器组件
如何成为过滤器组件
- 实现javax.servlet.Filter接口
- 配置过滤地址:@WebFilter(“过滤地址”)
- 代码写在doFilter方法中(会强制让重写几个抽象方法)