A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同学们,今天我们就正式学习Servlet的使用了,今天需要掌握的就是如下三个案例,通过敲案例掌握重要知识点。

今日需要掌握的有:
  • 通过登录案例,掌握基本的Servlet的使用,从前台接收数据,处理数据,并将结果响应给前台
  • 通过设置时间跳转页面案例,掌握如何设置响应头信息
  • 通过记录网站登录成功案例,掌握一个重要对象ServletContext的使用,重点掌握存取数据API和生命周期
  • 处理乱码问题:请求乱码(get/post),响应乱码


请同学们按照如上要求,总结今日所学。


52 个回复

倒序浏览
颜琳琳:
今日学习了Servlet的生命周期:Servlet的生命周期是在用户第一次访问servlet后创建servlet实例,然后调用innt方法,然后每执行一次就调用一次service方法,最后在服务器正常关闭和在服务器中移除项目时servlet实例会被销毁,那么destroy方法就被执行了.(注:若要让innt在页面加载时就执行,那么就要在web.xml中进配置servlet在<Servlet-class>标签下使用<load-on-startup>2</load-on-startup>  传入一个正整数,然后传入的整数越小,被创建的优先级就越高)
通过登录案例学习了:浏览器向服务器数据,使用getParameter方法服务器来接收出来的参数,之后将其封装到一个实体类中,最后将其发送会给浏览器.
通过定时跳转的页面学习到了响应头的信息中的Refresh直接定时跳转,使用setHeader()方法来实现,直接获取的格式如下 : setHeader(“Refresh”,”跳转的时间;url=”跳转的绝对路径”);
通过重定向来实现: 先获取重定向的编码: 获取的方法setStatus(302), 之后在使用setHeader(“Location”,”相对路径”),然后创建要跳转的html页面,在此页面中编写代码其中要注意要编写一个<meta http-equiv="Refresh" content="跳转的时间;url=跳转的绝对路径"/>
最后通过学习了域对象SetvletContext其中的获取数据的作用来获取数据,ServletContext中的方法有setAttribute()设置数据,getAttribute()获取数据,removeAttribute()移除数据.
请求乱码解决 :
get:
Stringstr=newString(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");
post:   
request.setCharacterEncoding("utf-8");

响应乱码:        response.setContentType("text/html;charset=utf-8");
回复 使用道具 举报
今天对动态页面设计Servlet(HttpServlet)进行了进一步的学习,,这里比较重要的是Servlet的生命周期:通常情况下,Servlet是在第一个用户第一次访问页面时,服务器内部自动创建Servlet对象,并调用其中的init方法,而后用户的每一次请求(包括第一次请求)都会导致Servlet对象调用service方法(根据请求方式的不同调用不同的doXXX方法),最后随着服务器的关闭,或者项目的移除,Servlet对象会调用destroy方法进行销毁

在页面跳转中,主要有两个方法:
1.刷新跳转:该方法中主要涉及到响应头参数的设置问题,通过响应对象调用sethandler()方法,里面参数是Refresh
2.重定向,重定向方法首先得先对状态码进行设置setStatus,然后通过响应对象调用sethandler()方法,里面参数是Location,也有试了用sendRedirect方法,也能实现该功能,就是不知道这两种方法的区别

最后是对域对象ServletContext,它的生命周期较为简单,就是在服务器启动时,服务器会为每一个项目都创建一个ServletContext对象,项目中的每一个类都可以获得该对象(也就是说它的作用域是所在的项目),在服务器关闭时或者项目移除销毁.重开服务器后,值会恢复初始状态......
回复 使用道具 举报
本帖最后由 六道的骸6 于 2018-6-3 10:05 编辑

张裕
                                      Servlet
Servlet的实现关系
        Servlet:接口 → GenericServlet: 通用的Servlet → HttpServlet: Http的Servlet

用户登录操作顺序
        1 创建User表
        2 创建User实体类
        3 在WEB_INF的lib文件夹里 导包 c3p0,mysql,DButils
        4 创建UserDao,UserServlce,UserServlet,        html页面
        5 接收数据→处理业务→查询数据库→返回查询结果到用户

Servlet的生命周期
        (重点)
        生命周期:一个对象从创建到销毁的过程
        Servlet生命周期:从创建到销毁的过程
                创建时间: 客户第一次访问Servlet时创建Servlet实例(只创建一次)
                销毁时间: 当项目从服务器中移除的时候,或者关闭服务器的时候

        用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例
        那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法
        在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost)
        当Servlet从服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行

Servlet的相关配置
        1 在服务器启动时自动创建Servlet,在web.xml中的<servlet></servlet>标签中配置:
                <load-on-startup>?</load-on-startup>  --- 传入正整数(从2开始,1已经被占用),整数越小,被创建的优先级就越高.
        
        2 Url-patten的配置(三种方式)
                1.完全路径匹配        :以 / 开始                        例如:/ServletDemo4
                2.目录匹配                :以 / 开始 需要以 * 结束.        例如: /*         /aaa/*
                3.扩展名匹配        :不能以 / 开始    以 * 开始的.         例如: *.do         *.action
                !!!错误的写法        : /*.do

        匹配优先级: 完全路径匹配 > 目录匹配 > 扩展名匹配

开发中的路径编写
        相对路径: 需要找位置的相对关系        不能以 / 开始   ../
        绝对路径: 不需要找位置的相对关系 可以以 / 开始  
                写法1(带协议) http://IP地址:端口号/项目名/虚拟路径名
                写法2        /项目名/虚拟路径名

                绝对路径中分为客户端路径和服务器端路径
                        客户端路径一定要加项目名
                        服务器端路径不需要加项目名


                                        五秒跳转
使用Http协议中的Refresh头信息来进行页面跳转
        response中设置响应头
                addHeader(String name,String value);                --- 针对一个key对应多个value的响应头.(一个key有多个value)
                            addDateHeader(String name,long date);
                            addIntHeader(String name,int value);

                setHeader(String name,String value);(重点)        --- 针对一个key对应一个value的响应头.(一个key只有一个value 后面的会覆盖前面的)
                        setDateHeader(String name,long date);
                        setIntHeader(String name,int value);

使用JS控制读秒的效果
        1 setStatus  设置重定向状态码
        2 setHeader 设置头 "Location","路径" 跳转到HTML页面
        3 在HTML中设置meta标签 定义5秒跳转
        4 设置读秒效果


                                        记录登录人数
ServletContext对象: 用来存储数据, 存的数据在范围内有作用,称为域对象
        setAttribute 存储数据
        getAttribute 获取数据
        removeAttribute 移除数据

操作步骤
        1 初始化记录次数变量 存入到ServletCOntext
        2 登录成功后 次数+1
        3 跳转到另一个类 获取登录成功次数

ServletConfig:获得Servlet的配置信息(了解)
        String getServletName();                ---获得Servlet在web.xml中配置的name的值
        String getInitParameter(String name);        ---获得Servlet的初始化参数的
        Enumeration getInitParameterNames();        ---获得所有Servlet的初始化参数的名称

ServletContext(重点):是一个域对象
        作用范围:整个web工程
                     创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象
                    销毁:服务器关闭的时候,或者项目从服务器中移除的时候
        作用:
                1.用来获得全局初始化参数
                2.用来获得文件的MIME的类型
                3.作为域对象存取数据   
                4.用来读取web项目下的文件
回复 使用道具 举报
本帖最后由 Eclipse启动 于 2018-6-3 09:35 编辑

郑阳阳
设置响应头信息:
使用响应对象调用setHeader方法传入两参数,第一个参数为响应头的Key,第二个参数是修改完的参数,
能把原本的参数替换掉,定时跳转setHeader("Refresh","需要多少秒跳转;url=/项目名/配置文件上url的参数").
ServletContext的使用:
ServletContext是一个域对象,可以作用于整个项目.
设置全局函数,重写init方法,调用getAsyncContext()获取AsyncContext对象调用
setAttribute存储数据,getAttribute是取出数据,removeAttribute是删除数据
Servlet的生命周期:
第一次访问会创建Servlet,创建的时候会调用init方法,访问调用service方法,项目被移除出服务器或正常关闭服务器会调用destroy方法
重复访问不会重复创建Servlet对象,只会重复调用service方法.
处理乱码:
get请求:String str = new String(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");
post请求:request.setCharacterEncoding("utf-8");
响应乱码:
response.setContentType("text/html;charset=utf-8");
回复 使用道具 举报
林文辉

三层架构:
1.主要分为Dao(数据)层,Service(业务逻辑)层,web(界面)层。
2.把各个模块分开主要是为了降低耦合度。每个模块自己做自己的事
3.主要是一个思想,高内聚低耦合。这样的好处有很多,比如你有需求变化之类的
,你只需在在对应的层里修改就行了,就不需要把整个项目改一遍。

用户登录功能实现:
1.表单form action属性中写入要跳转到的Servlet
2.request.getParameter()获取表单中的参数。
3.将参数封装到实体类中,调用业务层,业务层调用数据层,通过DBUtils查询数据
库中的数据,并返回一个实体类
4.如果为空,返回登录失败,否则返回登录成功,通过response.getWirter().println()返回。

Servlet的生命周期:
1.第一次访问Servlet时,服务器就会创建一个Servlet实例,Init方法就会被调用。
2.重复访问也只会重复执行Service方法。不会重复的创建Servlet实例。
3.在Service中根据不同的请求方式,会调用不同的doxx方法。
4.Serlvet在服务器中被移除,或者关闭服务器时,Servlet实例就会被销毁,destroy方法就会执行

Servlet的配置方式:
1.完全路径匹配,     如/demo1,/aaa/bbb
2.目录匹配        如/* /aaa/bb*
3.扩展名匹配:        如*.do或者*.jsp
匹配优先级:完全路径匹配>目录匹配>扩展名匹配

实现5秒跳转案例:
1.可以通过Refresh实现定时跳转,通过设置程序头信息。
    response.setHeader("Refresh", "5;url=/jsp/index.html");
2.可以通过js实现读秒跳转效果
   response.setHeader("Location", request.getContextPath()+"/jsp/success.jsp");
    在success.jsp中
   <meta http-equiv="Refresh" content="5;url=${ pageContext.request.contextPath }/jsp/index.jsp">
    再通过js
            var time=5;
        window.onload=function(){
        setInterval(function(){
                        time--;
                        document.getElementById("s1").innerHTML=time;
                },1000);
        }

记录网站登录成功的人数:
1.在init()方法中初始化count=0,再存入setAttribute().域中
2.每次向Servlet发出请求时,Servlet里就读取一次getAttribute(),返回到客户端,再
将count++存入Servlet中

回复 使用道具 举报
5119 中级黑马 2018-6-2 21:33:07
7#
游荣辉
总结
今天学习了Servlet:
        Servlet的生命周期(就是Servlet从创建到销毁的过程):用户第一次访问的时候,服务器会创建一个Servlet的实例,然后init的方法就会
    执行,每一次访问服务器Servlet中的service就会执行一次,当服务器关闭时或者Servlet从服务器中移除是就会调用Servlet中的destroy方法消除
        Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
        在web.xml中在<servlet></servlet>标签中配置:
        <load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.       
        现在已经不使用实现Servlet,而是继承他的实现类HttpSevlet,因为实现一个接口就要重写他的所有方法,而继承只要重写你想要的方法就可以了
        ServletContex(域对象)的作用
                1.用来获得全局初始化参数.
                2.用来获得文件的MIME的类型.
                *3.作为域对象存取数据.(他的作用范围是整个web项目,服务器启动的时候就会创建一个域对象,他会随着服务器的关闭或者项目的移除而销毁)
                *4.用来读取web项目下的文件.(现在不知道)
回复 使用道具 举报
张育辉
servlet总结:
                一:servlet就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议.
                        Servlet就是SUN公司提供的一个动态网页开发技术
                        用来处理从客户端浏览器发送的请求,并且可以对请求作出响应
                二:生命周期是一个对象从创建到销毁的过程
                        原理:用户第一次访问servlet时候,服务会创建一个servlet实例,那么servlet中的init()方法会执行;
                        任何一次请求服务器都会创建一个新的线程去访问servlet()的方法,当servlet服务器中移除掉或者关闭掉
                        那么servlet的实例就会被销毁掉,destroy()方法就会执行;
                三:ServletContext对象
                                1,什么是ServletContext对象
                                存数据的区域就是域对象,
                                  ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象
                                  内部封装是该web应用的信息,ServletContext对象一个web应用只有一个(一个项目只有一个域对象,所有的类共享)
                                2,servlrtContext生命周期是项目发布启动的时候创建,项目移除或服务器关闭销毁
                                域对象的通用的方法:
                                setAtrribute(String name,Object obj);设置
                                getAttribute(String name);获取
                                removeAttribute(String name);移除
回复 使用道具 举报
Do1 中级黑马 2018-6-2 21:39:10
9#
本帖最后由 Do1 于 2019-10-14 03:00 编辑


今天学习了使用HttpServlet获取表单数据,实现客户端访问远程MySql并由服务器返回结果的过程,还有一个新的概念叫做ServletContext域对象,这个对象可以用来获得全局初始化参数或者用来获得文件的MIME的类型,还有Servlet的生命周期,为了不防止过分的浪费资源所以只有在用户访问的时候才会去开线程调用service方法,当Servlet被移除掉或者关闭服务器的时候实例就会销毁,销毁调用destroy方法

servlet配置引入了一个新的概念,就是方法的优先级 <load-on-startup>2</load-on-startup>,其中的数字代表优先级.



回复 使用道具 举报
郭明杰
继承HttpServlet 比实现Servlet 的好处是不需要重写其他没有用到的方法

用户登录操作顺序
        1 创建User表 并存入数据
        2 创建User实体类
        3  导包 c3p0,mysql,DButils(WEB_INF-->lib)
        4 创建UserDao,UserServlce,UserServlet等页面
        5 接收数据→处理业务→查询数据库→返回查询结果到用户

Servlet的生命周期
        客户第一次访问Servlet时创建Servlet实例(只创建一次),执行Servlet中的init

方法
        任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法
        当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么

destroy方法就会执行.

* <load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级

就越高.


url-pattern配置方式共有三种:
1.完全路径匹配        :以 / 开始                                例如:        /ServletDemo4

, /aaa/ServletDemo5 , /aaa/bbb/ServletDemo6
2.目录匹配                :以 / 开始 需要以 * 结束.        例如: /* ,/aaa/*

,/aaa/bbb/*
3.扩展名匹配                :不能以 / 开始 以 * 开始的. 例如: *.do , *.action

使用Http协议中的Refresh头信息可以实现页面的跳转


回复 使用道具 举报
柯威龙
今天学习了servlet,主要学习了网站后台实现的案例.在学习案例中有学习了如何跳转.一种是使用响应
的Refresh方法直接在代码中实现,另一种是使用重定向,需要在代码中和html中做准备.案例把之前所学
的部分知识点融合.然后还学习了生命周期.生命周期就是从创建到销毁.servlet,的销毁也就是当项目移除
或者正常关闭服务器.servlet是单例,生命周期有三种方法,init()是客户默认第一次访问,destory是当服务器
关闭或者项目移除时启用.
回复 使用道具 举报
李志勇:
Servlet:
就是一个运行在WEB服务器上的小的Java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议
登入页面流程:
创建包和类-----引入jar包----引入login页面-----编写Servlett->Service->Dao
Servlet的生命周期:
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
<load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.1是被默认占有;
response中设置响应头:
        Refresh在响应头中是用来设置定时页面跳转;
        --- 针对一个key对应一个value的响应头.
                setHeader(String name,String value);               
                setDateHeader(String name,long date);
                setIntHeader(String name,int value);
ServletContext:
        这种对象称为域对象  可以用来存取数据  ;
        this.getServletContext().setAttribute("count", count);获得域对象并把数据存入其中;
         this.getServletContext().getAttribute("count");获得域对象并把数据取出;
回复 使用道具 举报
吴鹏
总结
----------------------------------
一 通过登录案例,掌握基本的Servlet的使用,从前台接收数据,处理数据,并将结果响应给前台


三层架构要掌握,即界面层,业务层,数据访问层,还有实体类,用来封装从表单获得的数据;
界面层用来接收表单的数据,以及调用业务层的方法对请求做出响应;
业务层创建方法,用来联系界面层和数据访问层;
数据访问层只与数据库打交道,增删改查;
将数据封装成实体类发生在界面层,实体类的创建要根据使用的表格的字段;
接收数据是,使用request.getParameter(String name)方法,参数为表格中需要获得的值的name属性值;
将数据接收完毕后,通过创建实体类,使用set方法,将数据封装成一个实体类对象;
创捷业务层对象,调用业务层的方法,此方法传入参数为封装好的实体类对象,然后,我们到业务层,创建数据访问层对象,将
数据访问层和界面层通过业务层创建的方法联系起来,中间传递的参数为封装好的实体类,业务层创建好的方法是有返回值的;
通过方法传递,最终将封装好的对象传入数据访问层,在数据访问层中,使用QueryRunner核心类,根据实际需求,编写sql语句,返回
与数据库操作过的对象;
返回后会直接返回到界面层中(因为方法传递时候,全部都是有返回值),根据实际需求,判断传过来的对象,将结果响应到浏览器;

----------------------------------
二 通过设置时间跳转页面案例,掌握如何设置响应头信息


response.setStatus();此方法为设置响应头的状态,
response.setHeader();此方法为设置对应响应头状态的响应头内容
如我们要设置登陆成功后跳转,可以设置响应头状态为302,对应的key值为"Refresh";代码如下:
response.setStatus(302);
response.setHeader("Location","要跳转的地址");也可以:
response.set("Refresh","要跳转的地址");
在上面中,在要跳转的地址前面用分号隔开,填入数字,可以实现经过一定时间(数字,单位秒)后,再跳转;

---------------------------------
三 通过记录网站登录成功案例,掌握一个重要对象ServletContext的使用,重点掌握存取数据API和生命周期

生命周期:
与生命周期相关的方法:init(),service(),destory()
首先,当客户端第一次发送请求到服务器时,会创建一个Servlet,并且,当有init()方法时,会调用init()方法进行全局变量的初始化;
此后,每当发送一次请求时,都会调用一次service()方法进行响应;而当服务器停止或者项目移除时,会调用destory()方法,将Servlet
销毁,由Java的垃圾回收回收掉释放的资源;

ServletContext:是一个域对象,作用范围是整个项目,当项目被加载时,即会创建该域对象,项目被移除或服务器关闭时,被销毁;
该域对象可通过方法进行赋值和取值:
常用的方法:
getAttribute(String name);
从ServletContext中获取指定name属性值的数据,获取的都是Object类型,有需要是要强转;
setAttribute(String name,Object object);
向ServletContext中存入指定name属性值的数据;
removeAttribute(String name);
向ServletContext中移除指定name属性值的数据;

------------------------------------
四 处理乱码问题:请求乱码(get/post),响应乱码

请求乱码解决办法:
在doGet或doPost的方法内第一行写入

request.setCharacterEncoding("UTF-8");
响应乱码解决办法:
在doGet或doPost的方法内第一行写入
response.setContentType("text/html;charset=UTF-8");
含义是,将响应中的文本内容当作html内容来识别,字符编码设置为UTF-8


回复 使用道具 举报
侯玉林
今天讲了servlet .登录页面验证,隔5秒页面跳转,登录人数记录
回复 使用道具 举报
江某人:
先有数据库User表  根据表来创建实体类
User:实体类
UserDao:操作数据库,对User的所有操作都写在这里
UserService:业务层,每个方法都是一个业务
UserServlet:(1)接收数据(2)调用Service处理业务(3)完成跳转
Servlet:用来接收和响应从客户端发送过来的请求,通常使用HTTP协议
登入页面流程:创建包和类-----引入jar包----引入login页面-----编写Servlet->Service->Dao
Servlet的生命周期:
l  用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
response中设置响应头:
    Refresh在响应头中是用来设置定时页面跳转;
    --- 针对一个key对应一个value的响应头.
     暂时只用到:setIntHeader(String name,int value);
ServletContext:
    这种对象称为域对象  可以用来存取数据  ;
    this.getServletContext().setAttribute("count", count);获得域对象并把数据存入其中;
     this.getServletContext().getAttribute("count");获得域对象并把数据取出;

回复 使用道具 举报
郑雪平

今天主要都是在学习如何使用Servlet完成用户登录的案例.首先第一步要创建数据库和表文件;接下来第二步是创建包和类,并分别让类实现Servlet        接口,编写一个类来继承HttpServlet;第三步是引入相对应的JAR包,总共是需要引入三个,分别为:1.mysql数据库驱动包;2.c3p0连接池的jar包;3.dbutils的包;第四步是引入之前写好的相应的页面;第五步是写一个DAO类.还有关于一个对象的生命周期,就是一个对象从创建到销毁的过程.在编写代码中关于路径的编写可分为两种,一种是相对路径,另一种是绝对路径.
回复 使用道具 举报
许剑鸿     webDay14

继续深入学习Servlet

Servlet的生命周期(面试常用的问题): init service destory
* 生命周期:就是一个对象从创建到销毁的过程.
* Servlet生命周期:Servlet从创建到销毁的过程.
* 何时创建:用户第一次访问Servlet创建Servlet的实例
* 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.

通过登录并跳转页面掌握Servlet的使用

获取前台数据 : getParameter("name");getParameterValues();getParaMap();
后台响应:response.getWriter().print() 将信息打印至页面上
跳转:通过设置响应头跳转一定时间后跳转页面  response.setHeader("Refresh","5;url=/........")
       设置重定向直接跳转页面 response.setStatus(302)  response.setHeader("Location","/.......")

request.setCharacterEncoding("UTF-8");从前台获取数据得到乱码解决方法
response.setContentType("text/html;charset=UTF-8");从后台向前台响应出乱码解决方法



ServletContext:ServletContext是一个域对象.
                    * 作用范围:整个web工程.
                    * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.
                    * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.

作用:
        * 1.用来获得全局初始化参数.
        * 2.用来获得文件的MIME的类型.
        * 3.作为域对象存取数据.(今日掌握)
        * 4.用来读取web项目下的文件.



回复 使用道具 举报

施炎生
一,Servlet生命周期:Servlet从创建到销毁的过程.
1. 何时创建:用户第一次访问Servlet创建Servlet的实例
2.何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
        用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
二,网站登录写法
1.创建数据库中的User表
2.创建User实体类
3.导包:C3P0,mysql-connection,DBUtils
4.创建UserDao,UserService,UserServlet,HTML页面
5.UserServlet:接收数据--调用service处理业务--判断是否存在这个user
调用UserDao完成:select * from user where username=? and password=?
得到一个数据库中查询到的User对象,返回给UserServlet。
三,ServletContext是一个域对象.
1.作用:作为域对象存取数据;用来读取web项目下的文件。
2.作用范围:整个web工程.
3. 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.
4. 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.
四,网站登录Bug解决方法:
1.the import cannot be resolved  :先移除再重新导jar包(右键项目->build path -> Config build path -> Libraries-> remove后,重新导入。)
2.点击登录页面不跳转,控制台报错:C3P0配置文件中表的路径url写错,创建的表不是在所写路径里。
回复 使用道具 举报
16weisong
今天主要学习了servlet的生命周期,servletContext对象和实现用户登录注册,统计网站访问人数,其中Servlet生命周期和ServletContext对象是重点,只需要实现最后一个案例就能掌握今天学的内容
回复 使用道具 举报
陈世彪:
今天学习了Servlet
登录案例中,要先创建数据库,再使用
request.getParameter("username")获取网页提交回来的信息
QueryRunner queryRunner=new QueryRunner();
获取数据库,用select查找数据库中是否有获取的信息
如果有就页面响应
response.getWriter().println("登录成功")
如果没有的话就页面响应
response.getWriter().println("登录失败")
通过时间设置跳转时,使用
setHreader("Refresh","时间;要跳转的页面的地址")
也可以使用response.setStatus(302);重定义
直接重定义跳转到需要显示的页面response.setHeader("Location","地址");
ServletContext中使用
this.getServletContext().getAttribute("count")获取数据
this.getServletContext().setAttribute("count"count)设置数据
对象ServletContext,它的项目类每个都可以获得他的对象,在服务器关闭和自动移除时会销毁
get:
Stringstr=newString(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");
post:   
request.setCharacterEncoding("utf-8");
响应乱码:
response.setContentType("text/html;charset=utf-8");
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马