#Servlet
*使用servletRequest 接收参数
*解决中文乱码问题
*post请求
req.setCharacterEncoding("UTF-8"),放在getParameter之前
*get请求
String username = req.getParameter("username");
username = new String (username.getBytes("ISO-8859-1"),"UTF-8");
*响应中文乱码问题
res.setContentType("text/html;charset=utf-8")
res.getWriter().println("你好你好");
*servlet的生命周期
生命周期:就是一个对象从创建到销毁的过程.
Servlet的生命周期:Servlet从创建到销毁的过程
创建:客户第一次访问Servlet是创建Servlet的实例
销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
Servlet只创建一次,说明Servlet是单例的
*用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
*servlet的相关配置
*启动时创建Servlet
Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
* <load-on-startup>2</load-on-startup> --- 传入正整数,整数越小,被创建的优先级就越高.
*url-pattern的配置
共有三种配置方式
1.完全路径匹配:以 / 开始
eg:/ServletDemo4,
2.目录匹配:以 / 开始,需要以 * 结束
eg:/*, /aaa/*,
3.扩展名匹配:不能以 / 开始, 以 * 开始
eg:*.do,*.action
匹配优先级:完全路径匹配>目录匹配>扩展名匹配
*开发中路径的编写
相对路径:都是需要找位置的相对关系. 不能以 / 开始.
* ./ 当前路径 ../上一级目录
* 使用相对路径访问:
* http://localhost:8080/day09/demo4-url/demo1.html
* http://localhost:8080/day09/ServletDemo6
绝对路径:
* 绝对路径中分为客户端路径和服务器端路径:
* 客户端路径一定要加工程名. /day09/ServletDemo6
* 服务器端路径不需要加工程名. /ServletDemo6
只有转发是服务器端路径
一般都写客户端路径(加项目名),遇错就改.
*ServletContext对象
***ServletContext存的数据都有一定的作用的范围,这种对象成为域对象
*用来存取数据:
*用来向ServletContext中存入数据
setAttribute(String name,Object object)
*用来向ServletContext中获取数据
getAttribute(String name)
*用来从ServletContext中移除数据
removeAttribute(String name)
*设置时间跳转页面
response.setHeader("Refresh", "5,url=/day12-Demo2/CountServlet");
*response中设置响应头
* addHeader(String name,String value); --- 针对一个key对应多个value的响应头.
* addDateHeader(String name,long date);
* addIntHeader(String name,int value);
* setHeader(String name,String value); --- 针对一个key对应一个value的响应头.
* setDateHeader(String name,long date);
* setIntHeader(String name,int value);
例如:头信息: xxx:aaa
* addHeader(“xxx”,”bbb”); -->xxx:aaa,bbb
* setHeader(“xxx”,”bbb”); -->xxx:bbb
|
|