servlet安装步骤
1、从Tomcate的lib目录下找servlet-jar夹包,放到项目的lib目录下
2、实施并且部署一个servlet
(1)创建一个java类
(2)让java类继承httpServlet
(3)重写这个类中的doGet()方法
(4)进入web.xml中配置servlet 配置servlet-name子标签,配置servlet-class子标签
(5)配置servlet-mapping标签 servlet-name标签,这个标签必须和在第四步配置的servlet-name一致
url-pattern标签,指代前端页面访问的路劲
(6)在servlet的doget()使用HttpServletRequest中的getParameter方法获得前端发送的参数
getParameter方法中的参数应该与form表单中的空间中的name保持一致,这样拿到的内容就是name空间中的内容
遇到一个特殊情况,有时候我不知道前段给我们发送的有哪些内容:
我们可以用req.getParameterMap方法来实现这个过程,该方法可以帮助我们获得请求中的所有参数。
(7)在doget()中使用HttpServletResponse中的getWriter方法获得一个printWrite,然后使用这个流向前端发送数据。
*(一)向前端发送数据出现中文乱码问题:以一个resp.setContentType("text/html;charset=utf-8");以这种形式解决中文乱码问题
(二)返回一个HTML或者一个JSP的界面。
(1、)重定向过程,通过resp.sendRedirect("重定向的路劲");
特定:浏览器发送了两次请求 浏览器的发生变化
(2、)转发过程通过request.dispatcher("需要转发的页面").forward(req,resp);
特点:浏览器的地址栏不发生不发生变化,还是请求的接口位置
浏览器只发送一次请求(另一个请求服务器发出)
通过servlet直接向浏览器发送一个页面,这个页面是由servlet直接生成的
1.生成的html页面可以动态添加数据
2.缺点:代码太过于复杂
Servlet生命周期:
1、构造方法 如果没有配置load-on-startup=1,测用户访问时创建,若配置了则用户启动服务器立刻创建对像,
(1) 这个过程只执行一次,意味着Servlet在服务器中只存在一个对象
2、初始化方法 (init ) 只执行一次
(1)如果配置了init-param,我们会在init方法执行后,使用servlet中的getInitParameter(String) 这个
方法,来加载一下全局参数,比如数据库配置,其他特定同构造方法
3、service方法
(1)每次请求都被调用一次,负责处理具体请求的过程,比如决定使用doget和dopost方法
4、destory方法
(1)容器进程关闭时调用
(2)容器重新部署实调用
(3)容器手动强制中执时,不调用
4、调用后,构造方法和init方法可以再次被调用,也就是说这个对象被销毁了,可以在创建了
Filter过滤器
先执行web.xml中,在根据拦截到的范围执行对应的filter类的条件逻辑过程
web.xml中配置根据拦截范围调节范围大小,只拦截一个页面/页面名.html。想拦截多个范围的可用*.html,再在对应的类中用白名单,根据getRequestURL
判断是否有。
filter在servlet之前创建,创建之后立刻执行init,创建后执行doFilter
先销毁servlet,在销毁filter。
filter比servlet大