韩顺平 servlet 笔记 第2讲

时间:2021-12-01 16:02:20

1、

韩顺平 servlet 笔记 第2讲

2、开发servlet三种方法

  1.实现servlet接口

  2.继承GenerieServlet

  3.继承HttpServlet

3、servlet开发流程

  1)在tomcat中webapps中建一个文件夹(myWebsign) ->  WEB-INF  ->  classes(放servlet的) lib(放jar包的)web.xml文件

  2)引入jar包  servlet-api.jar

    package com.tsinghua;实现servlet接口

    import javax.servlet.*;

    import java.io.*;

    import javax.servlet.Servlet;

    import javax.servlet.ServletConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequest;

    import javax.servlet.ServletResponse;

    import java.io.IOException;

    public class Hello implement Servlet{

      //该函数用于初始化servlet(类似于类的构造函数)

      //该函数只会被调用一次(当用户第一次访问该servlet时被调用)

      public void init(ServletConfig  parml) throws ServletException{

      }

      //得到servlet配置文件

      public ServletConfig getServletConfig(){

      }

      //这个函数用于处理业务逻辑

      //程序员应当把业务逻辑代码写在这里

      //当用户每访问servlet时,都会调用

      //req:用于获得客户端(浏览器)信息

      //res:用于向客户端返回信息

      public void service(ServletRequest req,ServletRespinse res)  throws {

         PrintWriter  pw = res.getWriter();

         pw.println("hello,world");

      }

      public String getServletInfo(){

      }

      //销毁servlet实例(释放内存)

      //1.reload 该servlet(webApps) 2.关闭tomcat  3.关机

      public void destory(){

      }

    }

  3)部署servlet  在web.xml文件中加代码

    <servlet>

      <!--给你的servlet取名,任意的-->

      <servlet-name>hello</servlet-name>

      <!--指明servlet的路径,(包名+类名)-->

      <servlet-class>com.tsinghua.Hello</servlet-class>

    </servlet>

    <servlet-mapping>

      <!--给你的servlet取名,任意的,与上对应-->

      <servlet-name>hello</servlet-name>

      <!--这是在浏览器中输入的访问该servlet的url,任意的-->

      <url-pattern>/sp</url-pattern>

    </servlet-mapping>

  4)启动Tomcat 访问你的servlet 

    在浏览器中输入:http:127.0.0.1:8080/myWebsign/sp 回车

4、servlet的生命周期

  1)封装servlet由相应的容器来完成

  2)创建一个Servlet实例

  3)调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次

  4)服务,调用servlet的service()方法,一般业务逻辑在这里了处理。该方法在访问servlet时都会被调用

  5)销毁 调用servlet的destory()方法,销毁该servlet实例 该方法在一下情况被调用

    1.reload 该servlet(webApps) 2.关闭tomcat  3.关机

5.这是第二种开发servlet的方法(继承GenericServlet开发)

  package com.tsinghua;

  import javax.servlet.GenericServlet;

  import java.io.*;

  public class HelloGen extends GenericServlet{

    //重写service方法即可

    public void service(ServletRequest req,ServletResponse){

      //返回hello.world! generic

      try{

        printwriter pw = res.getwriter();

        pw.println("hello,world!generic");

      }catch(Exception e){

        e.printStackTrace();

      }

    }

  }

6.通过继承HttpServlet开发servlet

  package com.tsinghua;

  import javax.servlet.http.*;

  import java.io.*;

  public class HelloHttp extends HttpServlet{

    //处理get请求

/      //req:用于获得客户端(浏览器)信息

    //res:用于向客户端返回信息

    public void doGet(HttpServletRequest req,httpServletResponse res){   

     try{

        printwriter pw = res.getwriter();

        pw.println("hello,world!generic");

      }catch(Exception e){

        e.printStackTrace();

      }

    }

    public void doPost(HttpServletRequest req,httpServletResponse res){

      this.doGet(req,res);

    }

  }

7、用户登录网站

  package com.tsinghua;

  import javax.servlet.http.*;

  import java.io.*;

  public class Login extends HttpServlet{ 

      //处理get请求

      //req:用于获得客户端(浏览器)信息

    //res:用于向客户端返回信息

    public void doGet(HttpServletRequest req,httpServletResponse res){   

        //业务逻辑

     try{

        //中文乱码

        res.setContentType("text/html;charset=gbk");

        printwriter pw = res.getwriter();

        //返回登录界面

        pw.println("<html>");

        pw.println("<body>");   

        pw.println("<h1>登录界面</h1>");

        pw.println("<form action=logincl method=post>");

        pw.println("用户名:<input type = text  name = username><br>");

        pw.println("密码:<input type = password  name = pwd><br>");

        pw.println("<input type = submit  value = loing><br>");

        pw.println("</form>");

        pw.println("</body>");

        pw.println("</html>");

      }catch(Exception e){

        e.printStackTrace();

      }

    }

    public void doPost(HttpServletRequest req,httpServletResponse res){

      this.doGet(req,res);

    }

  }

 

//用户验证servlet

  package com.tsinghua;

  import javax.servlet.http.*;

  import java.io.*;

  public class LoginCl extends HttpServlet{ 

      //处理get请求

      //req:用于获得客户端(浏览器)信息

    //res:用于向客户端返回信息

    public void doGet(HttpServletRequest req,httpServletResponse res){   

        //业务逻辑

     try{

        //中文乱码

        res.setContentType("text/html;charset=gbk");

        String u=req.getParameter("username");

        String p = req.getParameter("pwd");

        if(u.equals("sp")&&p.equals("123")){

          //合法

        }else{

          //不合法

          //跳转

          res.sedRedirect("login");//写你要到的servlet的那个url 

        }

      }catch(Exception e){

        e.printStackTrace();

      }

    }

    public void doPost(HttpServletRequest req,httpServletResponse res){

      this.doGet(req,res);

    }

  }