servlet
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet相关的知识,希望对你有一定的参考价值。
1.什么是servlet(接口)
定义所有的servlet都必须实现该接口
一个servlet是一个小的java程序,必须运行在一个web服务器中,能用来接收从客户端发送的过来的请求,也能响应给客户端请求结果,通过http协议来传输请求内容和响应请求结果,说明servlet能解析http协议。
2.如何编写servlet程序
1.实现接口Servlet或者继承HttpServlet
2.编写配置文件
在web.xml中添加配置文件
3.Servlet在tomcate服务器中的执行过程
** http://localhost/ServletDemo/demo**
请求会先到达tomcate服务器,服务器先检查项目是否存在,服务器在启动的时候,会把web.xml里面的配置文件全部都解析好了。找到url-pattern节点的内容是demo的,接着找到servlet-mapping节点中的servlet-name节点的内容,z然后找到和该内容一样的servlet节点中servlet-name节点的内容,最后找到servlet-calss节点中的全路径。服务器通过反射技术,生成reques(封装了所有请求信息)t和response(封装了所有的响应信息)和servlet类的对象,通过对象调用servlet接口中的init()he service()方法,并把request和response对象传递给servlet
4.servlet的生命周期
生命周期:在特定的时间干特定的事情
servlet生命周期分为:创建(init()) 提供服务(service()) 销毁(destory())
init():只执行一次,第一次访问,先创建servlet对象,然后调用init(),在调用service()
service():执行无数次
destory():执行一次,服务器关闭前
总结:servlet单例的
5.servlet的体系结构
HttpServlet重写service干嘛呢?获取请求方式,如果是get执行doGet(),如果是post执行doPost()
6.路径问题
相对路径
./代表当前目录下某个文件或者文件夹,视后面跟着的名字而定
../当前目录上一级目录下摸个文件或者文件夹,视后面跟着的名字而定
绝对路径
详写:http://localhost/项目名/资源
简写:/项目名/资源
7.request对象获取请求参数
HttpServletRequest 继承 ServletRequest,统称为requset接口,代表请求,该接口的实现类由tomcate创建
String getParameter(String name) 获取的是文本框,密码框,单元按钮,下拉选择框等
String[] getParameterValues(String name) 获取的是复选框的值
Map getParameterMap() 获取到表单中的所有值
8.reponse对象响应客户端
HttpServletResponse 继承 ServletResponse,统称为response接口,代表响应,该接口的实例由tomcate创建
向页面输出的方法如下:
ServletOutputStream getOutputStream() 获取字节输出流
PrintWriter getWriter() 获取字符输出流
向页面输出中文会产生乱码,为什么?响应内容和浏览器编码不一致
字节流:
设置浏览器编码:response.setHeader("Content-type","text/html;charset=UTF-8")
设置字节数组编码:out.write("中文".getBytes("UTF-8"))
字符流:
设置浏览器编码:response.setHeader("Content-Type","text/html;charset=UTF-8")
设置response对象的缓冲区的编码:response.setCharacterEncodeing("UTF-8");
response对象默认是有缓冲区,缓冲区默认编码是ISO-8859-1
简写:response.setContentType("text/html;charset=UTF-8")
9.Servlet默认是在第一次访问时创建。如何让servlet在tomcate启动时就创建
在web.xml中
10.url-pattern的配置
完全路径匹配:配置文件怎么写,就怎么访问,以/开头。优先级最高
目录匹配:当访问的路径不存在时访问该servlet,写法/。优先级第二
扩展名匹配:当访问的路径不存在时并且以扩展名结尾时访问该servlet,不能以/开头,.do *.action,优先级最低
11.重定向
什么是重定向
客户端想服务器发送请求,服务器告诉客户端你去重定向(状态码302,响应头location=地址),客户端接到重定向的响应,去请求location的值,在得到响应。重定向结束
response.setStatus(302);
response.setHeader("location","/项目名/资源")
简写
response.sendRedirect("/项目名/资源");
以上是关于servlet的主要内容,如果未能解决你的问题,请参考以下文章