零基础学Servlet
 
开发Servlet的三种方法:实现Servlet接口,继承GenericServlet,继承HttpServlet
 
一.实现Servlet接口(Servlet生命周期很重要)
需求:向浏览器回送helloworld
1.webapp文件下建立web.xml,和class文件夹和lib文件夹
2.写servletclass
(init)
//该函数英语初始化该servlet(类似类的构造函数)
//只会被调用一次(当用户第一次访问servlet时调用
service
//这个函数用于处理业务逻辑,程序员应当把业务逻辑代码写在这里service
//用户每访问一次该servlet,都会被调用该方法
//req:用于获取浏览器的信息
//res:用于向浏览器返回信息(不能直接返回,必须得到printwriter)
//syso和pw一个是向控制台打印,一个是向浏览器打印
 
 
(destory)
//销毁servlet实例(释放内存)
//1.reload该servlet2.关闭tomcat3.关闭windows
 
public class HelloWeb implements Servlet {
 
           @Override
           public void destroy () {
                    // TODO Auto-generated method stub
                   
           }
 
           @Override
           public ServletConfig getServletConfig() {
                    // TODO Auto-generated method stub
                    return null ;
           }
 
           @Override
           public String getServletInfo() {
                    // TODO Auto-generated method stub
                    return null ;
           }
 
           //这个相当于构造函数
           @Override
           public void init (ServletConfig config ) throws ServletException {
                    // TODO Auto-generated method stub
                   System . out. println( "Servlet>>>>>creat" );
           }
 
           //这个是核心部分, req接收浏览器的请求
           //res向浏览器发送消息,但是必须用打印流
           int count =0 ;
           @Override
           public void service (ServletRequest req , ServletResponse res )
                              throws ServletExceptionIOException {
                    // TODO Auto-generated method stub
                    count++;
                             PrintWriter pw =res .getWriter ()                   
                   System . out. println( "Servlet>>>>>look" +count );
                   pw .println ( "hello,i see you!") ;
                   pw .printf ( "you are the %d person i saw"count );                  
           }
 
}
 
 
 
 
3.部署servlet(每写一个servlet要部署一次)
在web.xml文件中部署,理解别人规范!!
  <servlet>
<!----给servlet取名---->
    <servlet-name></servlet-name>
<!----指明servlet路径---->
    <servlet-class></servlet-class>
  </servlet>

  <servlet-mapping>
<!----给servlet取名---->(映射)
    <servlet-name></servlet-name>
<!----这是在浏览器中输入的访问该servlet的url,任意的---->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 
tomcat里面有个服务器管理的功能,可以reload
 
 
4.servlet的生命周期
servlet部署在容器里,(我们使用的是tomcat,也可以是别的比如jboss,weblogic)他的生命周期由容器管理;servlet的生命周期分为几个阶段:
1.装载servlet,由相应的容器完成
2.创建servlet实例
3.调用servlet的init()方法,该方法只会在第一次访问该servlet时被调用一次
4.服务:调用该servlet的service()方法,一般都是业务逻辑在这里处理
5.销毁:调用servlet的destory()方法
 
 
 
 
二.通过继承GenericServlet开发servlet
在servlet发展过城中曾经有genericservlet这个类可以实现servlet~
//这是第二种开发servlet的方法(继承GenericServlet开发)
//只需要去重写service方法即可
 
 
 
 
三.通过继承HttpServlet开发servlet(普遍广泛使用中)
重写doGet和doPost方法,这是html提交表单的两种方法。
两种方法的区别
1.post安全性高,get会将数据显示在地址栏
2.get数据不能超过2K,post建议小于64k;
3.get响应速度快,要求服务器立即处理,而post可能会形成一个队列请求
综上,建议post
 
//这是第三种开发servlet的方法(通过继承HttpServlet)
//处理get请求。doGet()
//httpservletrequest req:这两个对象是容器创建的
//httpservletrequest res:
 
这两个方法可以合二为一,doPost()直接调用doGet()方法。
 
写一个servlet部署一次
 
 
 
servlet开发实例
简单的用户登录网站
我们总共有三个servlet!!三个java类,登录界面,验证后台,成功界面
 
 
1.进行简单的用户验证 
 
   
 
        public void doGet (HttpServletRequest request , HttpServletResponse response)
                              throws ServletExceptionIOException {
//解决中文乱码
                   response .setContentType ( "text/html;charset=gbk") ;
//业务逻辑是返回一个登录界面
          PrintWriter pw =response .getWriter ();
           //Java可以返回静态 html界面
          pw .println ( "<html>") ;
          pw .println ( "<bady>") ;
          pw .println ( "<h1>登录界面</h1>" );
           //form表单
          pw .println ( "<form action=longcl method=post>" );
          pw .println ( "用户名:<input type=text name=username><br>" );
          pw .println ( "密码:<input type=password name=password><br>" );
          pw .println ( "<input type=submit value=loing><br>" );
   pw .println ( "</form>") ;
          pw .println ( "</bady>") ;
          pw .println ( "</html>") ;
           }
 
验证输入是否合法
//业务逻辑,接收login的用户名和密码,验证用户的合法性,现在我们认为姓名等于wei密码等于123合法
//request .getParameter 获取属性
//response .sendRedirect//跳转到你要的servlet的URL
//欢迎界面
              //处理login的servlet,Logincl
           public void doGet (HttpServletRequest request , HttpServletResponse response)
                              throws ServletExceptionIOException {
                    //获取变量值
                   String u =request .getParameter ( "username") ;
                   String p =request .getParameter ( "password") ;
                    //处理信息部分
                    if (u .equals ( "wei") &&p .equals ( "123"))
                              //跳转操作,必须跳转到你希望的URL中
                             response .sendRedirect ( "wel") ;
                    else response. sendRedirect( "login" );
           }
           //欢迎界面 servlet
           public void doGet (HttpServletRequest request , HttpServletResponse response)
                              throws ServletExceptionIOException {
                   PrintWriter pw =response .getWriter ();
                   pw .println ( "well,what do you need ?my master!" );
           }
 
部署好web.xml就可以跑起来了。
posted on 2014-05-23 22:27  耍王在1218  阅读(161)  评论(0编辑  收藏  举报