0
点赞
收藏
分享

微信扫一扫

Servlet-1

Sikj_6590 2022-03-30 阅读 37
html5tomcat

这里写目录标题

1 HttpServletRequest 对象

HttpServletRequest 对象代表客户端浏览器的请求,当客户端浏览器通过 HTTP 协议访问服务器时,HTTP 请求中的所有信息都会被 Tomcat 所解析并封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

1.1 获取请求数据

<body>
    <form action="getInfo.do" method="post">
        姓名:<input type="text" name="username"/><br>
        爱好:<input type="checkbox" name="userlike" value="sport">体育
            <input type="checkbox" name="userlike" value="sport">音乐
        <input type="submit" value="ok">
    </form>
</body>
</html>
public class GetRequersDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("username:"+username+"<br/>");
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

在这里插入图片描述
在这里插入图片描述

  • getParameter只能取单个数据,复选框选不了。

1.2 获取复选框数据

public class GetRequersDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String[] userlikes = req.getParameterValues("userlike");
        List<String> strings = Arrays.asList(userlikes);
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("username:"+username+"<br/>");
        out.println("hobbies:"+strings+"<br/>");
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

在这里插入图片描述

1.3 获取所有提交数据的key

public class GetRequersDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Enumeration<String> parameterNames = req.getParameterNames();
        List<String> keys = new ArrayList<>();
        while(parameterNames.hasMoreElements()){
            keys.add(parameterNames.nextElement());
        }
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        out.println("Keys:"+keys+"<br/>");
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

在这里插入图片描述

1.4 使用 Map 结构获取提交数据

req.getParameterMap()
获取请求中所有的数据并存放到一个 Map 结构中,该方法返回一个 Map,其中 key 为 String 类型 value为 String[]类型。

public class GetRequersDataServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Map<String, String[]> parameterMap = req.getParameterMap();
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        Iterator<Map.Entry<String,String[]>> iterator = parameterMap.entrySet().iterator();
        while(iterator.hasNext()){
            Map.Entry<String,String[]> entry = iterator.next();
            out.println("Keys:"+entry.getKey()+" Value:"+Arrays.asList(entry.getValue())+"<br/>");
        }
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

在这里插入图片描述

2.资源访问方式

2.1 绝对路径

绝对路径访问资源表示直接以”/”作为项目的 Content Path。该方式适用于以”/”作为项目的 Content Path

<form action="/getInfo.do" method="post">

2.2 相对路径

相对路径访问资源表示会相对于项目的 Content Path 作为相对路径。该方式适用于为项目指定的具体的 Content

<form action="getInfo.do" method="post">

3. 获取请求头信息

public class GetRequestHeaderServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String header = req.getHeader("Accept-Language");
        Enumeration<String> headerNames = req.getHeaderNames();
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");

        while(headerNames.hasMoreElements()){
            String key = headerNames.nextElement();
            String value = req.getHeader(key);
            out.println("Key:"+key+" Value: "+value+"<br/>");
        }
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

3.1获取请求头案例

/**
 * 需求:编写一个Servlet,如果浏览器的语言是zh-CN,显示“你好,聪明的中国人!”,
 * 如果浏览器的语言设置为en-US,那么则显示“Hello,American”。
 */
public class LanguageServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String header = req.getHeader("accept-language");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE> ITBZ </TITLE></HEAD>");
        out.println("<BODY>");
        if(header.indexOf("zh-CN") != -1){
            out.println("你好,聪明的中国人!");
        }else if(header.indexOf("en-US") != -1){
            out.println("Hello,American");
        }else{
            out.println("对比起,不支持该语言");
        }
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}
举报

相关推荐

0 条评论