美文网首页Java
servlet笔记

servlet笔记

作者: GG_lyf | 来源:发表于2020-06-07 23:30 被阅读0次

前言

        在学servlet的时候总是感觉有点懵懵的,做了写笔记,不知道有没有用,今天没事就又看了看.还真是温故而知新啊!!!


开搞

1.HTTP协议:

超文本传输协议:规定数据的格式
浏览器网服务器发送-----------请求
服务器往浏览器会写-----------响应
请求:请求行 请求头 请求体
响应:响应行 响应头 响应体

登录案例:
需求:
在页面上输入用户名和密码,提交到服务器上,服务器拿着用户名和密码去数据库中查找有无此用户若有用户,则提示登录成功
若无此用户,则提示用户名密码不匹配
技术分析:
表单
servlet
请求(request)
响应(response)

表单:
收集用户数据
所有的字段要想提交到服务器必须有name属性
提交的地址action
请求方式:post(将数据放到了请求体中)
///////////////////////////////////////////////////////////////////////////////

2.servlet:

动态的web开发技术,本质就是一个类,运行在服务器端的一个java小程序处理业务逻辑,生成动态web内容
编写一个servlet步骤:
1.编写一个类
a.继承Httpservlet
b.重写doGet或者doPost方法
2.编写配置文件(web-inf/web.xml)
a.注册servlet
b.绑定路径
3.访问
http://主机:端口号/项目名/路径
localhost:8080/项目名/路径名

例如:
a.注册servlet 使用servlet标签
serlvet-name:给servlet起个名字全局唯一
serlvet-class:存servlet的全限定名复制过来
<servlet>
<servlet-name>First</servlet-name>
<servlet-class>org.vector.first.First</servlet-class>
</servlet>

b.绑定路径使用servlet-mapping标签
servlet-name:使用上面已起好的名字建议夏制
ur1-pattern:访问路径要求:目前必须以“/“开头唯一
<servlet-mapping>
<servlet-name>First</servlet-name>
<url-pattern>/ss</url-pattern>
</servlet-mapping>

接受参数:
格式:key=value
sting value=request.getparameter("key")
例如:http://localhost:8080/项目名/路径?username=tom
request.getParameter("username")就可以获取tom值
回写内容:
response
response.getWriter().print("success");
在doGet方法中写设置编码格式为utf-8
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");

步骤分析:
1.先有数据库和表
2.创建工程
3.复制页面
4.导入jar包:
驱动dbutils c3p05.导入工具类和配置文件
datasourceUtilsc3pO-config.xml
6.创建servlet(Loginservlet:路径/1ogin)
接受用户名和密码
调用service层(Userservice)完成登录操作提示信息
1ogin(username,password)
调用dao8.dao通过用户名和密码查询数据库


<form class="form-horizontal" action="路径" method="post">
<input type="text" name="名字" class="form-control" id="username" placeholder="请输入用户名">
<input type="password" name="密码" class="form-control" id="inputPassword3" placeholder="请输入密码">

配置文件地址要用localhost

servlet总结
servlet的体系结构:
Servlet:接口
|
Genericservlet:抽象类
|
HttpServlet:抽象类
|
自定义servlet
servlet常用方法:
void init(servletconfig config):初始化
void service(ServletRequest request,ServletResponse response):服务处理业务逻辑
void destroy():销毁
Servletconfig getservletconfig():获取当前servlet的配置对象
Genericservlet常用方法:
空参的Init()若我们自己想对servlet进行初始化操作,重写这个init()方法即可
Httpservlet常用方法:
service做了实现,把参数强转,调用了重载的service方法
重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法
doGet和doPost

///////////////////////////////////////////////////////////////////////////////

3.servlet生命周期★★★

serlvet是单实例多线程
void init(Servletconfig config):初始化
*初始化方法
*执行者:服务器
*执行次数:一次
*执行时机:默认第一次访问的时候
void service(ServletRequest request,ServletResponse response):服务处理业务逻辑
*服务
*执行者:服务器
*执行次数:请求一次执行一次
*执行时机:请求来的时候
void destroy():销毁
*销毁
*执行者:服务器
*执行次数:只执行一次
*执行时机:当servlet被移除的时候或者服务器正常关闭的时候了

4.url-pattern的配置:★

方式1:完全匹配必须以"/”开始例如:/hello /a/b/c
方式2:目录匹配必须”/”开始以””结束例如:/a/ /*
方式3:后缀名匹配以””开始以字符结尾例如:.jsp *.do *.action

优先级:
完全匹配>目录匹配>后缀名匹配

练习:
有如下的一些映射关系:
servlet1I映射到/abc/*
servlet2映射到/*
Servlet3映射到/abcServlet4映射到*.do

问题:
当请求URL为“/abc/a.html",“/abc/”和"/"都匹配,哪个servlet响应
Servlet引擎将调用servlet1。

当请求URL为“/abc"时,"/*”和"/abc”都匹配,哪个servlet响应
servlet引擎将调用servlet3。

当请求URL为"/abc/a.do"时,“/abc/”和“.do”都匹配,哪个servlet响应
Servlet引擎将调用servlet1。

当请求URL为“/a.do"时,/”和.do”都匹配,哪个servlet响应
servlet引擎将调用servlet2.

当请求URL为“/xxx/yyy/a.do"时,/*”和w.do”都匹配,哪个servlet响应
servlet引将调用Servlet2。

在servlet标签有一个子标签load-on-startup作用:
用来修改servlet的初始化时机取值:正整数值越大优先级越低

当我们的配置文件里面没有指定配置的话,会查找tomcat的web.xml,
若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理信息

案例2-当我们登录失败,提示”用户名密码不匹配”,3秒以后跳转到登录页面
技术分析:
定时刷新
常见的响应头-refresh响应头格式:
refresh:秒数;url=跳转的路径

设置响应头:
response.setHeader(string key,string value);设置字符串形式的响应头 response.addHeader(string key,string value);追加响应头,若之前设置设置过这个头,则追加;若没有设置过,则设置设置定时刷新
response.setHeader("refresh","3;url=/day0901/login.htm");

案例3-统计登录成功的总人次,
需求:
在一个用户登录成功之后,获取之前登录成功总人次,将次数+1.
在访问另一个servlet的时候,显示登录成功的总人次技术分析:servletContext
ServletContext:上下文(全局管理者)
常用的方法:
setAttribute(String key,object value);//设置值
object getAttribute(String key);//获取值
removeAttribute(String key)://移除值
获取全局管理者:getServletcontext():

步骤分析:
1.在项目启动的时候,初始化登录次数
在loginservlet的init()方法中获取全局管理者,将值初始化为0,放入servletcontext上
2.登录成功之后,在loginservlet中获取全局管理者,获取登录成功的总次数
3.然后将次数+1,让后将值设置回去
4.当访问showservlet的时候,获取全局管理者,获取登录成功的总次数,然后在页面上打印出来即可

快速创建servlet
New->other->搜索servlet->Next->Class Name->Next->url mapping->Eidt修改->OK->Next->勾选Inher , doGet , doPost->finish

5.servletcontext:理解

上下文(全局管理者)一个项目的引用.代表了当前项目。
当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
当项目被移除的时候或者服务器关闭的时候servletcontext销毁

作用:
1.获取全局的初始化参数
2.共享资源(xxxAttribute)
3.获取文件路径
4.其他操作

获取servletcontext:
方式1:了解
getservletconfig().getservletcontext()
方式2:
getservletContext()

常用方法:
方式1:了解
String getInitParameter(String key):通过名称获取指定的参数值
Enumeration getInitParameterNames():获取所有的参数名称
在根标签下有一个context-param子标签用来存放初始化参数
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</context-param>
2.共享资源(xxxAttribute)xxxAttribute
3.获取文件路径
String getRealPath(string path):获取文件部署到tomcat上的真实路径(带tomcat路径)
Inputstream getResourceAsStream(String path):以流的形式返回一个文件
4.获取文件的mime类型大类型/小类型
String getMimeType(String 文件名称)
<load-on-startup>2</load-on-startup>

///////////////////////////////////////////////////////////////////////////////

5.域对象:★★★

servletcontext当成map集合

常用方法:
xxxAttribute()
servletcontext创建和销毁:.

当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象。
当项目被移除的时候或者服务器关闭的时候servletcontext销毁
存放:
共享的数据

获取文件的路径:
通过类加载器获取文件:
先创建2.txt 放在Webcontext目录下
在doGet中创建写:String l = 类.class.getclassLoader().getResource("2.txt").getpath();
Systemout.println(l);

///////////////////////////////////////////////////////////////////////////////

6.servletconfiq:(了解)

servlet配置对象
作用:
1.获取当前servlet的名称
2.获取当前servlet的初始化参数
3.获取全局管理者

方法:
string getservletName():获取当前servlet的名称(web.xwm1配置的servlet-name)
string getInitParameter(String key):通过名称获取指定的参数值
Enumeration getInitparameterNames():获取所有的参数名称
初始化参数是放在web.xml文件
servlet标签下子标签init-param
getservletcontext():获取全局管理者

相关文章

  • <JavaWeb>Servlet技术简介

    笔记总结自网易云课堂Servlet系列课程 什么是Servlet Servlet == Server + Appl...

  • Head First Servlet & JSP读书笔记

    Head First Servlet & JSP读书笔记 本书内容:Servlet和JSP Servlet和JSP...

  • Tomcat Servlet 工作原理

    简单叙述Tomcat Servlet工作原理,做一下笔记。 Servlet Servlet有很多种实现,例如:Je...

  • servlet学习笔记

    title: servlet学习笔记date: 2019-11-07 21:01:05tags: servlet学...

  • Servlet学习笔记,编写第一个servlet

    Servlet学习笔记,编写第一个servlet 用到的软件/工具:JDK1.6以上、maven 3.1.0、to...

  • Servlet笔记

    Servlet: 配置:两种方式 -> web.xml或Annotation1)在web.xml中配置:配置Ser...

  • servlet笔记

    一、ServerLet是什么?什么是CGI程序? 答:ServerLet是运用在web服务器或运用服务器上的程序作...

  • servlet 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet笔记

    JavaWeb应用的概念 在Sun的Java Servlet规范中,对Java Web应用作了这样定义:“Java...

  • Servlet笔记

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java...

网友评论

    本文标题:servlet笔记

    本文链接:https://www.haomeiwen.com/subject/idcktktx.html