最近在复习Servlet,发现其中有很多细节方面的东西都没有接触到,只是学了大概

1.请求转发和请求重定向的区别

2.输入参数为中文时候的乱码问题

3.Web工程中的目录写法

下面分别阐述


1.请求转发和请求重定向的区别

请求转发:request.getRequestDispatcher("/test.jsp").forward(request, response);

请求重定向:response.sendRedirect("/test.jsp");

请求转发是服务器行为,本质上是一次请求,所以参数可以传递

请求重定向是浏览器行为,本质上是俩次请求,由浏览器重新发出的请求去访问页面。因为是新的请求,所以参数不能够传递。

2.输入参数为中文时候的乱码问题

最新版本的tomcat的编码默认为utf-8,所以get处理中文和post一样处理

  • 在浏览器端发送请求,调
    request.setCharacterEncoding("UTF-8");来设置服务器接受信息的编码
  • response.setContentType("text/html;charset=UTF-8");

    指定HTTP响应的编码,同时指定了浏览器显示的编码
  • response.setCharacterEncoding("UTF-8");

    来设置HTTP响应的编码,如果之前通过response.setContentType("text/html;charset=UTF-8");设置了,则会覆盖之前的设置,所以开发时候只使用上面的方法即可

Web工程中的目录写法

如果"/"是给服务器使用,则代表当前的Web工程


如果"/"是给浏览器使用,则代表Webapps目录

"/"代表的是当前Web工程

  • this.getServletContext().getRealPath(/index.jsp)

2.在服务器端forward到其他页面

  • this.getServletContext().getRequestDispatcher("/index.jsp");

3.使用include指令或<jsp:include>引入页面

  • <%@include file = "/index.jsp"%>
  • <jsp:include page = "/index.jsp"%>

"/"代表的是当前webapps目录

1.请求重定向

response.sendRedirect("/blockDemo01/index.jsp");

2.使用超链接跳转

3.form表单提交

4.js脚本和css引用

在JSP页面中获得项目名称(blockDemo01)有俩种方式
${pageContext.request.contextPath}<%=request.getContextPath() %>

Servlet细节整合的更多相关文章

  1. Servlet细节

    Servlet细节 线程不安全的做法: * 不要在Servlet中创建成员!创建局部变量即可! * 可以创建无状态成员! * 可以创建有状态的成员,但状态必须为只读的!(不提供set方法) 1.Ser ...

  2. HTTP协议 Servlet入门 Servlet工作原理和生命周期 Servlet细节 ServletConfig对象

    1 HTTP协议特点   1)客户端->服务端(请求request)有三部份     a)请求行--请求行用于描述客户端的请求方式.请求的资源名称,以及使用的HTTP协议版本号 请求行中的GET ...

  3. 2016-2-1 Servlet细节

    Servlet的一些细节(韩顺平老师视频讲解)(1)由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序想要被外界访问,必须把servlet程序映射到一个URL地址上.这个工作在 ...

  4. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

    Servlet的调用图 前面我们已经学过了Servlet的生命周期了,我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映 ...

  5. 2 Servlet 细节

    1 Servlet 配置详解 ①  由于客户端在浏览器只能通过URL访问web服务器的资源,所以Servlet程序若想被外界访问,必须把Servlet 程序映射到一个URL 地址上,这个工作在项目we ...

  6. Servlet细节处理

    1.Servlet的线程安全问题 尽管servlet的工作效率高,但是线程也是不安全的,因为一个类型的Servlet只有一个实例对象,那么就有可能会出现一个Servlet同时处理多个请求 解决方案:所 ...

  7. Servlet技术之——概述、实现、细节、获取资源、ServletConfig、ServletContext

    Servlet概述.实现.细节.获取资源.ServletConfig.ServletContext (一) Setvlet基本概述 (1) 什么是Servlet ? Servlet(Server Ap ...

  8. (四)spring+servlet 整合

    一.Spring与Servlet的整合 1.1: 加入Spring的jar包.(要加web.jar包) 1.2: java工程中获取Spring的上下文对象. ApplicationContext c ...

  9. SpringBoot整合三大组建(Servlet、Listener、Filter)

    >[更多资源和教程请关注公众号:**非科班的科班**.如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力](https://blog.csdn.net/qq_43255017)## ...

随机推荐

  1. C语言和sh脚本的杂交代码

    在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示.在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了. #if 0 echo "He ...

  2. Jmeter-逻辑控制器之Foreach

    ForEach 作用:用来遍历当前元素的所有可执行场景:在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值: 输入变量前缀:在其中输入需要遍历 ...

  3. Django个人博客开发 | 前言

    本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier 1.前言 自学 Python,始于 Django 框架,Scrapy 框架,elasticsearch搜索引擎 ...

  4. [USACO08NOV]安慰奶牛Cheering up the Cow BZOJ 1232 Kruskal

    Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1..N. 每一个牧场都是一 ...

  5. C++使用using namespace std报错分析与解决方案

    一句话概括,不能同时使用using 和include ***.h: 详细传送门:https://blog.csdn.net/m0_37876745/article/details/78565315

  6. maven profile启动项目

  7. Java 实现栈,队列

    package base.structure; /** * @program: Algorithm4J * @description: 实现一个Stack * @author: Mr.Dai * @c ...

  8. sharepoint_study_12

    描述:SharePoint新建Web应用程序时提示如下错误: 解决: 1. Go to IIS 2. Select the DefaultAppPool and Go to the Advanced ...

  9. P3802 小魔女帕琪

    传送门 考虑前面7个魔法 如果前面七个魔法各不相同,那么就能完成一次帕琪七重奏 设 A=a1*a2*...*a7,S=a1+a2+...+a7,B=S*(S-1)*...*(S-6) 对于不同的施法顺 ...

  10. http文件上传/下载

    package unit; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputSt ...