博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet
阅读量:5886 次
发布时间:2019-06-19

本文共 5150 字,大约阅读时间需要 17 分钟。

/**Model1:jsp  ---> 显示页面  业务逻辑javaBeanModel2jsp-->页面显示servlet -->业务逻辑javaBeanservlet:01.实现类servlet接口的类 就是 servlet  !  我们常认为的!02.就是一个servlet接口!实现servlet的三种方式01.实现Servlet接口02.继承GenericServlet03.继承 HttpServlet    常用的HttpServlet--》继承GenericServlet--》实现Servlet接口servlet的生命周期:1.客户端发送请求---》servlet2.根据用户的请求 查询对应的servlet3.加载servlet到内存中4.servlet实例化--》调用init()初始化servlet5.根据用户的请求方式,service()来派发到不同的方法处理(doGet(),doPost())6.服务器关闭,执行destroy()销毁servlet*/

 

 

 sevlet的功能:

 01.接收用户的请求   post   get  文件上传  下载

 02.处理请求  取得前台的值  调用后台service层的代码

 03.返回响应   重定向   转发  错误界面

 

/* * 实现servlet的三种方式 * 01.实现Servlet接口 * 02.继承GenericServlet抽象类 * 03.继承HttpServlet抽象类   常用的方式 *  * HttpServlet     继承  GenericServlet   * GenericServlet  实现   Servlet 接口 *  *  * HttpServletRequest   继承了 ServletRequest * HttpServletResponse  继承了 ServletResponse */public class MyServlet extends HttpServlet { //常用的方式    @Override    public void init(ServletConfig config) throws ServletException {        System.out.println("初始化信息  Init   项目启动的时候不会初始化  " +                "用户访问servlet的时候实例化 只被 执行一次");    }    @Override    public void service(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {    System.out.println("派发器 用户每请求一次,就会执行一次,接收用户的请求时get还是post");       super.service(request, response);  //必须是 调用 父类的service方法 否则 死循环!    }        @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        System.out.println("这是一个DoGet请求  只要是get请求 每次都执行");    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        System.out.println("这是一个DoPost请求 ");    }    @Override    public void destroy() {        System.out.println("关闭服务器的时候 销毁  destroy  只被 执行一次");    }}
创建一个MyServlet
myServlet
cn.bdqn.servlet.MyServlet
myServlet
/myServlet
index.jsp
web.xml文件的配置

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              My JSP 'index.jsp' starting page    
创建一个jsp页面

运行之后后台的输出结果

 

myServlet
cn.bdqn.servlet.MyServlet
myServlet
/jsp/
index.jsp
web.xml文件中设置url-pattern的匹配模式
myServlet
cn.bdqn.servlet.MyServlet
name
小黑
myServlet
/MyServlet
初始化参数的配置web.xml文件
@Override    public void init(ServletConfig config) throws ServletException {        String initParameter = config.getInitParameter("name");        System.out.println("初始化的参数是:"+initParameter);        System.out.println("初始化信息  Init   项目启动的时候不会初始化  " +                "用户访问servlet的时候实例化 只被 执行一次");    }
修改对应的MyServlet文件中的init方法

现在我们在MyServlet中可以访问初始化的参数了!

但是如果后续我又创建了其他的Servlet,我还想用到初始化参数,而且初始化参数都是一致的! 怎么办?难道在每个servlet节点下面都创建init-param吗?

不需要  我们只需要 配置 context-param节点

name
小黑
web.xml文件中新增
public class MyServlet2 extends HttpServlet {    /*     * ServletContext:多个servlet共享的资源!     * 如果我们把每一个Servlet当成一个局部变量,     * 那么ServletContext就是一个全局的!     */    @Override    public void init(ServletConfig config) throws ServletException {        String initParameter = config.getServletContext().getInitParameter("name");        System.out.println("MyServlet2初始化的参数是:"+initParameter);    }    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        String initParameter =request.getServletContext().getInitParameter("name");        System.out.println("MyServlet2初始化的参数是:"+initParameter);        System.out.println("这是一个DoGet请求  只要是get请求 每次都执行");    }}
创建一个新的Servlet获取公共的初始化参数,必须要在web.xml文件中配置新创建的servlet节点
@Override    public void init(ServletConfig config) throws ServletException {         String initParameter =config.getServletContext().getInitParameter("name");        System.out.println("MyServlet初始化的参数是:" + initParameter);        System.out.println("MyServlet初始化信息  Init   项目启动的时候不会初始化  "                + "用户访问servlet的时候实例化 只被 执行一次");    }
修改之前的Servlet中的init方法

在浏览器中 分别输入两个servlet的地址,查看效果 都会获得初始化的参数

 

 

 

转载于:https://www.cnblogs.com/xtdxs/p/7094831.html

你可能感兴趣的文章
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>
WPF 实现窗体拖动
查看>>
NULL不是数值
查看>>
css绘制几何图形
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
Android网络编程11之源码解析Retrofit
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
发展大数据不能抛弃“小数据”
查看>>
中了WannaCry病毒的电脑几乎都是Win 7
查看>>