HttpServlet与它的两个参数的基本操作

1.HttpServlet

1.继承自GenericServlet,将servletrequest和servletresponse强转成了Httpservletrequest和Httpservletresponse,从而Httpservletrequest可以使用getmethod方法,来获取请求方法。

2.有dopost和doget方法来处理对应的请求。(以1为基础)

3.直接访问后台是get请求,正确流程过去的请求名可在html文件里定义:

<form action="hello" method="post">  <!-- servlet匹配的url和请求方法-->

结束html后自动访问action后的url

2.HttpServletRequst(HttpServlet的do…方法内的参数)

  1. 请求的生命周期很短暂,一次响应结束就被销毁。

2.在web.xml里的form里+:

用户名:<input type="text" name="Username"/><br>

可定义Username的变量,值为输入在“text”里的值,而HttpServletRequst的实例化对象可以get到这些变量。(要注意enumeration的遍历方法)

3.参数和值存在map里,key为string,value为string数组。getparameter()方法等价于getparameterValues()[0]。

<input type="checkbox" name="a" value="a">
<input type="checkbox" name="a" value="b">
<input type="checkbox" name="a" value="c">

此时key=“a”,value={“a”,“b”,“c”}。

4.parameterMap的遍历方法:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("POST");
    Map<String, String[]> map = req.getParameterMap();

    for (Map.Entry<String, String[]> k : map.entrySet()){
        String key=k.getKey();
        String []values=k.getValue();
        System.out.println("key:"+key);

        for (String a: values){
            System.out.println(a);
        }
        System.out.println();
    }
}

在这里插入图片描述
5.attribute和parameter区别.
6.获取服务端数据的几个方法:
在这里插入图片描述
在这里插入图片描述
(后两个分别是 获取路径的精确部分通用符部分

7.post请求 浏览器传给servlet参数值出现乱码的原因:
浏览器的中文数据用UTF-8传输(tcp协议),而Tomcat服务器默认解析字节流时的方法不支持中文

解决方案:

req.setCharacterEncoding("UTF-8");

即修改解析字节流方法

:如果Tomcat版本低,get方法也会出现乱码,此时需要修改server.xml配置文件如图在这里插入图片描述
或(弊端是每个中文参数都要重复以下操作)在这里插入图片描述

3.HttpServletResponse(HttpServlet的do…方法内的参数)

getwriter 在页面打印信息

PrintWriter out = resp.getWriter();
out.append("a");//print println write 都可以

同样也会遇到乱码问题,解决方案(在实例化out前):

//设置响应的MIME类型,像video/mp4,image/jpg,告诉浏览器响应的解析方式
resp.setContentType("text/html");
//setCharacterEncoding方法使用前提是先使用setContentType,此方法用于修改charset
resp.setCharacterEncoding("UTF-8");

常用的是直接:

resp.setContentType("text/html;charset=UTF-8");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值