栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java web学习第四天/2:javaweb中,路径分为相对路径和绝对路径,HttpServletResponse类的作用 请求转发 请求重定向

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java web学习第四天/2:javaweb中,路径分为相对路径和绝对路径,HttpServletResponse类的作用 请求转发 请求重定向

昨天的学习是看完了视频但是事情太多了,敲到两点有点顶不住,还有一点代码时间没有完成今天把昨天的补上吧,确实感觉后面如果要一点点详细的弄懂确实耗费的时间要多一点了,不过也挺充实的,向着大厂的目标一直学习,冲冲冲

写个目录吧

1、在javaweb中,路径分为相对路径和绝对路径两种:

2、HttpServletResponse类的作用

3、b)两个输出流的说明。

5、请求转发的特点:

6、解决respo响应回传字符串中文乱码问题

7、请求重定向

8、get post请求获取html页面的参数

9、验证Servlet的base标签作用

1、在javaweb中,路径分为相对路径和绝对路径两种:

相对路径是:    
.    表示当前目录
..    表示上一级目录
资源名    表示当前目录/资源名
绝对路径:
http://ip:port/工程路径/资源路径

--------------------------------------------------------------------------------------------------------------------------

2、HttpServletResponse类的作用
HttpServletResponse类和 HttpServletRequest类一样。每次请求进来,Tomcat服务器都会创建一个Response对象传递给servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpservletResponse表示所有响应的信息,
我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置。

--------------------------------------------------------------------------------------------------------------------------

3、b)两个输出流的说明。
字节流    getOutputStream();    常用于下载(传递二进制数据〉
字符流    getWriter();    常用于回传字符串(常用)
两个流同时只能使用一个。
使用了字节流,就不能再使用字符流,反之亦然。

--------------------------------------------------------------------------------------------------------------------------

5、请求跳转

5.1:验证请求跳转第一部分
//内容步骤
    //1、获取请求的参数(材料查看)
    //2、材料盖一个章,并传递到Servlet2中(柜台2查看材料)查看参数
        //setAttribute()创建好后其他类也能查看内容
    //3、问路Servlet2(柜台2)怎么走(请求转发)
        //请求转发必须要以/开头   /表示http://ip:port/工程名/并且映射到IDEA的webapps目录
    //4、前往Servlet2(柜台2)
public class Servlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、获取请求的参数(材料查看)
        String username =req.getParameter("username");
        System.out.println("在Servlet1(柜台1)中查看参数(材料):"+username);
        //2、材料盖一个章,并传递到Servlet2中(柜台2查看材料)查看参数
        //setAttribute()创建好后其他类也能查看内容
        req.setAttribute("key1","柜台1的章");
        //3、问路Servlet2(柜台2)怎么走(请求转发)
        //请求转发必须要以/开头   /表示http://ip:port/工程名/并且映射到IDEA的webapps目录
        RequestDispatcher requestDispatcher=req.getRequestDispatcher("/servlet2");
        //4、前往Servlet2(柜台2)
        requestDispatcher.forward(req,resp);
    }
}

--------------------------------------------------------------------------------------------------------------------------

5.2:

//验证请求跳转第二部分(完结)
//内容步骤
    //1、获取请求参数(查看材料)
    //2、查看Servlet1(柜台1)是否章
        //参数要与Servlet1的章的参数相同,这里都为key1
    //3、处理自己的业务

---------------------------------------------------------------

public class Servlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1、获取请求参数(查看材料)
       String username=req.getParameter("username");
       System.out.println("Servlet2(柜台2)查看参数:"+username);
       //2、查看Servlet1(柜台1)是否章
        //参数要与Servlet1的章的参数相同,这里都为key1
        Object key1=req.getAttribute("key1");
        //其中加的是对应的对象  例如上面的Object key1对象即为key1
        System.out.println("Servlet2(柜台2)查看是否有Servlet1的章:"+key1);

        //3、处理自己的业务
        System.out.println("Servlet2处理自己的业务");
    }
}

-----------------------------------------------------------


    Title
    
    


    这是a下的b下的c.html页面
跳回index.jsp首页

--------------------------------------------------------------


    这是web下的index.html页面
a/b/c.html
请求转发:a/b/c.html

---------------------------------------------------------------

5.3请求转发的特点:
1、浏览器的地址栏在请求转发时仍然是第一个地址没有变化
2、他们是一次请求
3、他们共享Request域中的数据'
4、可以转发到WEB-INF目录下'
5、不可以访问工程以外的资源

--------------------------------------------------------------------------------------------------------------------------

6、解决respo响应回传字符串中文乱码问题
        //1、解决response响应回传字符串中文乱码问题
        //1.1 (设置输出的编码格式)指定输出到客户端的时候,这些文字使用UTF-8编码
        //resp.setCharacterEncoding("UTF-8");
        //1.2.直接规定浏览器看这份数据的时候,使用什么编码来看
        //通过响应头,设置浏览器也使用UTF-8字符集
        //resp.setHeader("Content-Type", "text/html; charset=UTF-8");
        //这一行就可解决响应回传乱码问题!setContentType()方法参数为:"text/html; charset=UTF-8"(阅读格式和编码)
        resp.setContentType("text/html; charset=UTF-8");
    PrintWriter writer=resp.getWriter();
            writer.write("response getWriter()给客户端回传字符串");

--------------------------------------------------------------------------------------------------------------------------

7、请求重定向

    7.1:请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)

//内容步骤:    请求重定向:有的程序可能升级或者损坏了,指向另一个程序来完成其原来的功能可能功能更完善了(都为response即:resp)
    //1、设置响应码302,(表示已经搬迁):setStatus()方法
    //2、设置响应头说用新地址:Location :setHeader()方法
        //两个参数location和下一处地址http://localhost:8080/servlet_07/response2
        //测试了重定向是否共享Request数据(不共享) req.setAttribute()方法(重点1、是req,2、是两个参数"key1","value1")
//3、回传Response自己做的任务(和Response1是一起的)

public class Response1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("请求重定向问题:response");
        req.setAttribute("key1","value1");

        //1、设置响应码302,(表示已经搬迁)
        //resp.setStatus(302);

        //2、设置响应头说用新地址:Location
        //resp.setHeader("location","http://localhost:8080/servlet_07/response2");
        //一行代码就跑完了重定向sendRedirect()只有一个下一位的地址参数
        resp.sendRedirect("http://localhost:8080/servlet_07/response2");

    }
}

--------------------------------------------------------------

    7.2:请求重定向的特点
    1、浏览器地址栏会发生变化'
    2、两次请求
    3、不共享Request域中数据
    4、不能访问WEB-INF下的资源
    5、可以访问工程外的资源|

--------------------------------------------------------------------------------------------------------------------------

8::get post请求获取html页面的参数
//内容有
        //1、get请求:如何获取请求的参数req.getParameter()方法单个参数,参数为username,password等

        //2、多个参数getParameterValues()方法 其也变为了数组String应变为String[]
        // 例:String[] hobby=req.getParameterValues("hobby");
        // System.out.println("兴趣爱好:"+ Arrays.asList(hobby));

        //3、特!:post请求会有中文乱码问题 req.setCharacterEncoding("UTF-8");

public class ParameterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("------------doGet------------------------");
        //获取请求的参数
       String username=req.getParameter("username");
       String password=req.getParameter("password");
      //String hobby=req.getParameter("hobby");请求为单个参数使用
        // HttpServletRequest类的方法getParameterValues()请求值为多个参数时使用,其也应变为数组
        String[] hobby=req.getParameterValues("hobby");
       System.out.println("用户名:"+username);
       System.out.println("密码:"+password);
       System.out.println("兴趣爱好:"+ Arrays.asList(hobby));

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("-----------doPost-------------------------");
        //设置请求体的字符集为UTF-8,来解决post请求中文乱码的问题
        //此API要在获取参数前调用才有用
        req.setCharacterEncoding("UTF-8");
        //获取请求的参数
        String username=req.getParameter("username");
        String password=req.getParameter("password");
        //String hobby=req.getParameter("hobby");请求为单个参数使用
        // HttpServletRequest类的方法getParameterValues()请求值为多个参数时使用,其也应变为数组
        String[] hobby=req.getParameterValues("hobby");
        System.out.println("用户名:"+username);
        System.out.println("密码:"+password);
        System.out.println("兴趣爱好:"+ Arrays.asList(hobby));


    }
}

--------------------------------------------------------------------------------------------------------------------------

9、验证Servlet的base标签作用

//验证请求跳转来实现跳转页面
    //内容getRequestDispatcher()方法  forward(req,resp);方法
public class ForwardC extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("经过ForwardC程序");
        //请求转发记得/开头
        req.getRequestDispatcher("/a/b/c.html").forward(req,resp);

    }
}

感觉挺乱的后面再来整理下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号