您当前的位置: 首页 >  Java

少林码僧

暂无认证

  • 2浏览

    0关注

    317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java之Servlet基础

少林码僧 发布时间:2018-09-09 16:46:09 ,浏览量:2

什么是Servlet?
* 服务器端Java程序,servlet需要交给服务器来运行。
* 与javax.servlet.Servlet接口有关的java程序
如果使用servlet?
* 创建web项目
* 创建一个类,并实现Servlet接口
* 交给服务器运行 /WEB-INF/web.xml
* ```
    
    
        HelloWorld
        cn.itcast.HelloWorld
    
    
    
        HelloWorld
        /hello
    
    ```
* 测试:http://localhost:8080/hello
为什么这样使用? javax.servlet.Servlet的生命周期: init(ServletConfig)
*servlet的初始化方法,执行次数:1次
* javax.servlet.ServletConfig对当前servlet的配置信息的描述
    * getServletName():返回当前servlet的名称:配置
    * getInitParameter("paramName"):返回指定初始化参数名称的值

* * helloWorld222 cn.itcast.HelloWorld2 gf 凤姐

*getInitParameterNames():返回当前servlet的所有的初始化参数的名称
                * 返回值:java.util.Enumeration  --> hasMoreElements(),nextElement()
            * getServletContext():ServletConfig保存了当前web项目的 ServletContext的引用[暂记]
service(ServletRequest,ServletResponse)【**】
        * 当前servlet请求与响应时调用的方法
            * ServletRequest:存放所有用户的请求信息
            * ServletResponse:存放服务器响应给用户的所有的信息
        * 总结
            * request
                * 接口:javax.servlet.ServletRequest
                * 实现类:org.apache.catalina.connector.RequestFacade
                * 关系:
                    * public class RequestFacade implements HttpServletRequest {
                    * public interface HttpServletRequest extends ServletRequest {
                * 总结: RequestFacade --> HttpServletRequest  --> ServletRequest
                * 结果:javax.servlet.http.HttpServletRequest request = (HttpServletRequest) req;
            * response
                * 接口:javax.servlet.ServletResponse
                * 实现类:org.apache.catalina.connector.ResponseFacade
                * 关系:
                    * public class ResponseFacade implements HttpServletResponse {
                    * public interface HttpServletResponse extends ServletResponse {
                * 总结: ResponseFacade --> HttpServletResponse  --> ServletResponse
                * 结果:javax.servlet.http.HttpServletResponse response = (HttpServletResponse) resp;
destroy()
* 当前servlet的销毁方法,回收资源       
* javax.servlet.GenericServlet类【看】  this,super
    * 通用servlet实现类,与协议无关
    * 此类是抽象类,具有抽象方法service(ServletRequest,ServletResponse)
        * public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
    * 此类实现Servlet接口,此类也实现了ServletConfig接口
        * public abstract class GenericServlet implements Servlet, ServletConfig
    * 此类缓存了init方法的实际参数的值。(ServletConfig的实例对象给缓存了)
        * public void init(ServletConfig config) throws ServletException {
            this.config = config;
            this.init();
          }
    * 此类中在一个没有参数init方法,所有的servlet初始化工作,建议覆盖此方法。
        * 否则,覆盖带有参数的init方法,需要在方法的第一行添加super.init(config);
        * public void init(ServletConfig config) throws ServletException {
            super.init(config); //此行代码必须存在
            //之后是自己的内容
         }
* javax.servlet.http.HttpServlet类
    * 此类是抽象类,但是不存在抽象方法。
        * 抽象类的原因,需要子类进行HttpServlet类方法的覆盖
        * 没有抽象方法的原因:当子类覆盖父类的相应的方式时,没有强制要求
    * 此类是与协议(http)有关的servlet的实现类
        * request = (HttpServletRequest) req;
          response = (HttpServletResponse) res;
    * request.getMethod()方法,返回当前servlet的请求方法,方便与处理不同的请求
总结:
    * 创建一个类,继承HttpServlet类
        * 根据需求,覆盖doPost和doGet方法
    * 需要再web.xml中进行配置
    * 测试
    * 注意:
        * 如果需要初始化工作:覆盖init()方法
        * 如果初始化工作需要耗费大量时间,需要设置servlet的在服务器启动时进行初始化工作。
            * 2
            * 配置当前servlet在服务器启动时加载顺序,取值:0-6 ,值越小,优先加载
servlet的虚拟路径
1、只能使用 / 或 * 开头
2、/ 和 *. 不能同时存在
3、/ 或 /* 表示任意
4、只有*.才表示通配符

cmd: netsh winsock reset (win7)

关注
打赏
1661398670
查看更多评论
立即登录/注册

微信扫码登录

0.0406s