Java-Servlet小结

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文件中的标签正整数,标签内“正整数”的
      含义:多个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() + "
");
                writer.println("I'm ServletA,the request number is " + i);
       }

你可能感兴趣的:(Java-Servlet小结)