zoukankan      html  css  js  c++  java
  • Tomcat总结

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <!--配置servlet的别名,同时在servlet-class配置项中添加servlet类的完全限定名  包名+类名-->
        <servlet>
            <servlet-name>myServlet</servlet-name>
            <servlet-class>com.hailu.MyServlet</servlet-class>
        </servlet>
        <!--配置servlet跟请求的映射关系-->
        <servlet-mapping>
            <servlet-name>myServlet</servlet-name>
            <url-pattern>/first</url-pattern>
        </servlet-mapping>
        
        <servlet>
            <servlet-name>second</servlet-name>
            <servlet-class>com.hailu.MyServlet2</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>second</servlet-name>
            <url-pattern>/second</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>life</servlet-name>
            <servlet-class>com.hailu.ServletLife</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>life</servlet-name>
            <url-pattern>/life</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>MethodServlet</servlet-name>
            <servlet-class>com.hailu.MethodServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>MethodServlet</servlet-name>
            <url-pattern>/method</url-pattern>
        </servlet-mapping>
        
        <servlet>
            <servlet-name>request</servlet-name>
            <servlet-class>com.hailu.RequestServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>request</servlet-name>
            <url-pattern>/request</url-pattern>
        </servlet-mapping>
    </web-app>
    package com.hailu;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     *  Servlet类中可以有service方法,
     *      用来接受get或者post请求
     *      如果service和doGet或者doPost同时存在,那么默认会调用service方法
     *      如果同时又server,doGet和doPost方法,在service方法的实现中调用了super.service()会根据请求的方式跳转到doGet或者doPost
     *  doget方法:
     *      用来接受get请求
     *  doPost方法:
     *      用来接受post请求
     *
     * 总结:
     *      在编写servlet类的时候,不需要重新实现service方法,只需要重写doGet和doPost方法即可,用来接受post或者get请求
     *
     */
    public class MethodServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("我是post");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println(10/0);
            System.out.println("我是get");
        }
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("我是service");
            super.service(req, resp);
        }
    }
    package com.hailu;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Enumeration;
    
    /**
     * HttpServletRequest用来存放客户端请求的参数
     *  请求行
     *  请求头
     *  请求体
     *
     *
     */
    public class RequestServlet extends HttpServlet {
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("post请求");
            this.doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("get请求");
            //获取请求行数据
            //获取请求中的请求方式
            String method = request.getMethod();
            System.out.println(method);
            //获取请求的完整地址
            StringBuffer url = request.getRequestURL();
            System.out.println(url);
            //获取请求中的资源路径
            String uri = request.getRequestURI();
            System.out.println(uri);
            //获取请求中的协议
            String schema = request.getScheme();
            System.out.println(schema);
    
            //获取请求头数据
            //根据key获取value的值
            String userAgent = request.getHeader("User-Agent");
            System.out.println(userAgent);
            //获取请求头信息中的所有key的枚举对象
            Enumeration<String> headerNames = request.getHeaderNames();
            while (headerNames.hasMoreElements()){
                String key = headerNames.nextElement();
                String value = request.getHeader(key);
    //            System.out.println(headerNames.nextElement());
                System.out.println(key+":"+value);
            }
    
            //获取用户请求数据
            //无论请求方式是post还是get,获取用户数据的方式不变
            String name = request.getParameter("name");
            String pwd = request.getParameter("pwd");
            String fav = request.getParameter("fav");
            System.out.println(name+":"+pwd+":"+fav);
    
            //获取用户数据中的所有key
            Enumeration<String> parameterNames = request.getParameterNames();
            while(parameterNames.hasMoreElements()){
                System.out.println(parameterNames.nextElement());
            }
    
            //获取相同key的多个数据值,例如checkbox
            String[] parameterValues = request.getParameterValues("fav");
            for (String  str:parameterValues) {
                System.out.println("fav:"+str);
            }
    
            //其他常用方法
            //获取远程客户端的地址
            String remoteAddress = request.getRemoteAddr();
            //获取远程客户端的主机名称
            String remoteHost = request.getRemoteHost();
            //获取远程客户端的端口号
            int remotePort = request.getRemotePort();
            System.out.println(remoteAddress+":"+remoteHost+":"+remotePort);
    
            String localAddr = request.getLocalAddr();
            String localName = request.getLocalName();
            System.out.println(localAddr+":"+localName);
    
        }
    }
    package com.hailu;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     *
     * response:表示服务端返回数据的响应对象
     *  响应头:
     *  响应行:
     *  响应体:
     *
     *
     *
     */
    public class ResponseServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("this is post");
            this.doGet(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("this is get");
            //设置响应头,按照key-value键值对的方式来设置,如果存在相同的key,会把value的值覆盖
            response.setHeader("hehe","haha");
            response.setHeader("hehe","heihei");
            //设置响应头,按照key-value键值对的方式来设置,如果存在相同的key,不会覆盖值
            response.addHeader("beijing","shanghai");
            response.addHeader("beijing","guangzhou");
    
            //服务端返回的对象数据要按照一定的格式要求进行渲染,只有是html格式才会识别标签
    //        response.setHeader("Content-Type","text/html");
            response.setHeader("Content-Type","text/plain");
    //        response.setContentType("text/html");
            //设置响应状态码
    //        response.sendError(404,"not found");
            response.getWriter().write("<b>java is easy</b>");
    
        }
    }
    package com.hailu;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "ServletLife")
    public class ServletLife extends HttpServlet {
    
        /**
         * 完成servlet对象的初始化工作
         *  在servlet接受到第一次请求的时候创建对象
         *  生命周期:从第一次接受请求开始到服务器关系之后销毁
         *  当在web.xml文件中配置了<load-on-startup>1</load-on-startup>,在开启tomcat的时候就会创建servlet对象,中间的数值表示优先级的意思
         * @throws ServletException
         */
        @Override
        public void init() throws ServletException {
            System.out.println("init");
        }
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.getWriter().write("servlet life");
            System.out.println("learn servlet life");
            System.out.println(req.getParameter("name"));
        }
    
        @Override
        public void destroy() {
            System.out.println("我被销毁了");
        }
    }
    package com.hailu;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    
    /**
     * 处理乱码问题的方式
     *  1、get请求
     *      1、获取字符串之后使用new String(name.getBytes("iso-8859-1"),"utf-8")
     *      2、设置request的编码格式,同时在server.xml中添加useBodyEncodingForURI=true的属性
     *      3、在server.xml中添加URIEncoding="utf-8"
     *  2、post请求
     *      1、request.setCharacterEncoing("utf-8")
     *  3、response响应编码
     *       response.setCharacterEncoding("gbk");
     *
     *
     *
     *
     */
    public class CharsetServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            System.out.println("post");
            request.setCharacterEncoding("utf-8");
            String name = request.getParameter("name");
            System.out.println(name);
            response.setCharacterEncoding("gbk");
            response.getWriter().write("欢迎你!");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            System.out.println("get");
            //设置请求的编码格式
    //        request.setCharacterEncoding("utf-8");
            String name = request.getParameter("name");
    //        System.out.println(new String(name.getBytes("iso-8859-1"),"utf-8"));
            System.out.println(name);
        }
    }
  • 相关阅读:
    使用 ALinq 支持多种数据库
    jsData 使用教程(-) 加载数据
    java中的标准I/O流与文件1(J2SE入门16)
    java中的反射(J2SE入门20)
    java中的java5.0的新特性2(J2SE入门22)
    java中的网络入门2(J2SE入门19)
    java中的标准I/O流与文件2(J2SE入门17)
    java中的Java5.0 的注释 (Annotation)、多线程包1(J2SE入门25)
    java中的网络入门1(J2SE入门18)
    java中的java5.0的泛型1(J2SE入门23)
  • 原文地址:https://www.cnblogs.com/yanghailu/p/12756210.html
Copyright © 2011-2022 走看看