servlet-跳转、初始化传参、乱码、解析过程

一、跳转
  1. 转发
    用法:req.getRequestDispatcher(“目标文件”).forward(req, resp);

  2. 重定向
    用法:resp.sendRedirect(“目标文件”);

  3. 两者的区别
    (1)转发不会修改地址,重定向会
    (2)转发只有一次请求,重定向会在发一个请求到新的页面
@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost```");
        System.out.println("正在执行...");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username + "--" + password);
        if(name.equals(username)){
            /*转发*/
//          req.getRequestDispatcher("fail.html").forward(req, resp);
            /*重定向*/
            resp.sendRedirect("fail.html");
        }else{
//          req.getRequestDispatcher("success.html").forward(req, resp);
            resp.sendRedirect("success.html");
        }
        System.out.println("执行完毕...");
    }
二、初始化传参

说明:需要放在servlet里面,同时,只有这一个servlet可以取到该值,在init的时候使用ServletConfig取值
web.xml

<!--注册 -->
  <servlet>
    <servlet-name>Hello</servlet-name> <!--servlet名字 -->
    <servlet-class>servlet.Hello</servlet-class><!--路径 -->
    <init-param>
        <param-name>username</param-name><!--名称 -->
        <param-value>root</param-value><!--值 -->
    </init-param>
    <init-param>
        <param-name>password</param-name>
        <param-value>123abc</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!--正数表示在启动的时候自动初始化,数字表示顺序,数字越大越后-->
  </servlet>

Java

    private String name;
    private String pwd;
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("Hello init```");
        name = config.getInitParameter("username");
        pwd = config.getInitParameter("password");
        System.out.println(name + "--" + pwd);
    }
三、乱码

产生原因:编码和解码的方式不一致
常见的乱码:数据库、io、web

1.web请求乱码

(1)get
conf->server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               URIEncoding="utf-8"/>

(2)post
java

req.setCharacterEncoding("UTF-8");

2.web响应乱码
说明:无论是get还是post都一样
java

resp.setContentType("text/html;charset=utf-8");
四、解析过程

解析url->定位->web.xml->检查是否注册->调用
这里写图片描述
注:图片来源于《servlet详细讲解》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值