1、request可以拿到所有浏览器客户端的用户信息,具体方法可以查看帮助文档
2、request.setAttribute()
request.getAttribut();
3、在Servlet的doGet()或doPost()方法中,将信息显示在页面上:
PrintWriter pw = response.getWriter();
pw.write("用户名:"+uname);
4、设置编码设置(举例):
//设定获得请求时的字符编码格式
request.setCharacterEncoding("UTF-8");
//设定回复请求时的字符编码格式
response.setCharacterEncoding("UTF-8");
//拿到用户名和密码
String uname = request.getParameter("uname");
String pswd = request.getParameter("pswd");
//测试:将拿到的中文用户名分别在控制台和页面输出
//测试request编码:在控制台输出
System.out.println("用户名: "+uname);
//测试response编码:在页面输出
PrintWriter pw = response.getWriter();
pw.write("用户名 "+uname);
5、request.getAttribute()和request.setAttribute();
setAttribute();将从页面请求拿到的值保存起来,
getAttribute():将保存的值再拿出来
6、getWriter()方法,返回的是一个向客户端的输出流,通过这个流,可以向页面写一些输出结果
7、请求数据的传递
— request.setAttribute(String,Object);
— request.getAttribute(String),返回Object
8、页面跳转
— 方式一:response.sendRedirect("targetURL");
— 方式二:request.getRequestDispatcher("targetURL").forward(request,response);
— 区别:1)sendRedirect不可以带参数,不能转发请求,只能完成页面跳转
getRequestDispatcher可以带参数,不仅能完成页面的跳转,而且跳转时可以转发请求
2)地址栏的URL的变化:sendRedirect时跳转到哪个页面,最后就显示哪个页面的地址;
而是用getRequestDispatcher时显示的是处理请求的Servlet的地址
9、javax.servlet.Servlet接口中的5个方法
— service(ServletRequest req, ServletResponse res)
执行我们的代码,处理与客户端的请求/响应
— init(ServletConfig config) 创建对象(调用构造方法)之后,首先调用init()方法进行初始化
对Servlet实例进行初始化工作(在Servlet实例创建后,第一个调用的方法)
— destroy() 销毁对象之前最后执行的方法
由Servlet容器销毁Servlet实例前执行,执行一次,用于销毁内存空间等(用户代码)
— getServletConfig()
获取ServletConfig对象,该对象包含初始化和启动参数
— getServletInfo()
以字符串的形式返回Servlet的相关信息,如作者、版本和版权信息等
10、Servlet实例什么时候被加载(即创建)?
— A、一般情况下第一次访问Servlet时被创建(默认情况)
— B、服务器启动的同时加载Servlet:通过手动配置web.xml文件实现(手动设置)
11、如何配置服务器启动的同时加载servlet?
通过web.xml文件中的标签<load-on-startup>正整数</load-on-startup>,标签内“正整数”的
含义:多个servlet加载的优先级,数大,优先级高。加载标签位于<servlet></servlet>标签内
12、Servlet实例什么时候会被Comcat容器销毁?
— 服务器关闭
— 更新、停止web模块的时候调用
— 由Servlet容器根据情况调用
13、Servlet的生命周期(四个阶段)
— A、加载和实例化,由Servlet容器完成(Comcat)
— B、初始化:实例化Servlet后会调用init方法
— C、处理客户请求:Service方法(doPost和doGet)
— D、销毁Servlet之前会调用destroy方法
14、ServletConfig接口
— A、一个Servlet类对应一个ServletConfig,且由init(ServletConfig config)引用,通过config可以
拿到web.xml中的配置的初始化参数
— B、ServletConfig是由Servlet容器实例化的,Servlet实例化的同时实例化对应的ServletConfig
对象,并传入init(ServletConfig config);
— C、ServletConfig是init(ServletConfig)方法的参数,若想在其他方法中也需要调用Config,则
需改造Servlet类,有两种方法:
第一种:在实现了Servlet接口的类中声明全局变量(只能在类内调用该ServletConfig config)
第二种:重写getServletConfig()方法(类内类外均调用该Servlet对应的Servletconfig config)
public class InitServlet implements Servlet{
private ServletConfig config; //第一种方法:声明全局变量
@override
public void Init(ServletConfig config) throws ServletException{
super();
}
public void service(ServletRequest, ServletResponse response)
throws ServletException, IOExcetpion{
String initParameter = config.getInitParameter("test");
//其他操作
}
//第二种方法:重写getServletConfig(),返回config
public ServletConfig getServletConfig(){
//其他任意操作
//返回调用
return config;
}
}
15、在继承了HttpServlet类的Servlet类中,可以直接使用this.getServletConfig拿到ServletConfig config
原因:Servlet类——HttpServlet——GenericServlet(重写了getServletConfig方法)——Servlet接口
16、ServletContext接口
— A、每个Web应用启动后,Servlet容器都会创建唯一的一个ServletContext对象,该对象包含整个
Web程序的信息
— B、在自己定义的Servlet中,可以通过getServletContext方法获得ServletContext对象
【备注】getServletContext()是在GenericServlet类中定义的
— C、ServletContext接口跟ServletConfig接口有关,由ServletConfig可以拿到ServletContext
public ServletContext getServletContext(){
return getServletConfig().getServletContext();
}
— D、可以通过ServletConfig接口的实例获得与Servlet相关的配置信息,通过ServletContext接口
的实例获取整个Web应用的配置信息
17、网站计数器(部分代码):
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
Object number = servletContext.getAttribute("requestNumber");
int i = 0;
if( number == null)
servletContext.setAttribute("requestNumber",0);
else{
i = new Integer(number.toString());
i++;
servletContext.setAttribute("requestNumber",i);
}
PrintWriter writer = response.getWriter();
writer.write(servletContext.toString() + "<br>");
writer.println("I'm ServletA,the request number is " + i);
}