Servlet的配置、登录功能原理

一、Servlet的配置

可以说HttpServlet是Servlet的实现类,间隙性的实现了Servlet,比Servlet更完善更加实用,并且HttpServlet里的doGet和doPost在HttpServlet接口类里已经继承了Servlet并且重写了Servlet的


以后请求和响应用HttpServlet就可以了,如果像用init直接重写就好


你写完之后也不用配置web.xml了,所以说HttpServlet是我们以后用的方法

(如果你删除了HttpServlet继承的类最好也把自动建好的web.xml中的配置一起删掉)

但在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多,  我们一般创建类继承HttpServlet

实现步骤:

1)创建类继承HttpServlet类

2)覆盖doGet和doPost

3)在web.xml中进行servlet的配置

我们先来用一下这两个方法

先建立好并继承HttpServlet留下doGet和doPost

方法


靠响应获得一个打印流

二、做一个登录功能(大概原理)


我们现在学习了新知识所以以前的view层就是现在的jsp页面,以前的Controller层替换了继承了HttpServlet的web层,web层得获取jsp网页层的提交信息,需要用到doget所以替换了以前学习的知识,剩下的都没有变。

网页层,


web层

网页层的时候提交的用户名和密码都以键值对存储了,所以web层想要获取参数就得调用getParameter获取参数,获取哪一个的值呢?获取username里的值,密码同理。写到这里获取到了之后就可以写下面的了


Dao层


Dao层查询代码和之前学的一样

我们建一个类参数获取就是用户名和密码

Conn获取连接

String sql=要在sql数据库执行的代码 条件等下面赋值所以以?站位

Pst这里我忘记了

//赋值

给两个问号赋值

//处理结果集,(因为dao层和数据库连接查询有没有数据,所以最后返回给的有或者没有是,1和0。)

大概就是有就给row赋值1并返回调用者

没有就直接返回row给调用者(最初定位的row是0)

Service层

 


调用dao层

我们建一个类参数获取就是用户名和密码

定义一个row用来dao层接收返回值

给row赋值赋值的就是dao层的row返回值,处理一下异常

在把row返回给调用者

最后完成一下web层没有完成的

 


建立一个row来接收一下Service的返回值,接收哪一个返回值呢?参数是uname和pwd的,然后判断接收的返回值,如果不是0就显示登录成功(success)

如果不是就显示登录失败(fail)

这个登录方式值是大概理解,有一些JDBC的配置没有发布上来

什么是ServletContext对象

ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象     内部封装是该web应用的信息,ServletContext对象一个web应用只有一个

问题:一个web应用有几个servlet对象?----多个

ServletContext对象的生命周期?

创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状            态))

销毁:web应用被卸载(服务器关闭,移除该web应用)

怎样获得ServletContext对象

1)ServletContext servletContext = config.getServletContext();

2)ServletContext servletContext = this.getServletContext();

获得web应用中任何资源的绝对路径(重要 重要 重要)

方法:String path = context.getRealPath(相对于该web应用的相对地址);

写一个相对,得到一个绝对的path

 


ServletContext是一个域对象(重要 重要 重要)并且一个项目里面只有一个

什么是域对象?什么是域?

存储数据的区域就是域对象


ServletContext域对象的作用范围:整个web应(所有的web资源都可以随意向      servletcontext域中存取数据,数据可以共享)

 

等到后面会学Servlet01获取Servlet02往域里面存的东西

(Servlet02获取域对象并且向域里存值

Servlet01获得域对象然后再通过域获得里面的值)

 

ServletContext域对象存东西必须以键值对的方法存,而且键必须是String类型,值的Ojb类型,获取的时候记得转型。

域对象的通用的方法:

setAtrribute(String name,Object obj);

getAttribute(String name);通过键获取值

removeAttribute(String name);通过键删除值

怎样利用ServletContext对象做一个计算方法

你访问一次就记录一次访问的记录,这个时候我们得找一个地方来放计算,明显doGet不行,因为他是每次请求就调用一次,所以不适合我们做计数器。那哪个值创建一次呢? Init方法


这个时候可以配合刚刚的登录功能


原文地址:https://www.cnblogs.com/pandam/p/11255095.html