JavaWeb-03 统一字符集编码、JSP的页面元素、JSP九大内置对象-request

2023-05-16

1. 使用Eclipse开发Web项目(JSP项目)tomacat


2. 在Eclipse中创建的Web项目:

  • 浏览器可以直接访问WebContent中的文件
  • 例如 http://127.0.0.1:8888/MyJspProject/index1.jsp
  • 其中的index1.jsp就在WebContent目录中;
  • 但是WEB-INF中的文件 无法通过客户端(浏览器)直接访问,只能通过请求转发来访问

注意:并不是任何的内部跳转都能访问WEB-IN
原因是 跳转有2种方式:请求转发、重定向


3. 配置tomcat运行时环境

jsp<->Servlet

  1. 将tomcat/lib中的servlet-api.jar加入项目的构建路径
  2. 右键项目->Build Path ->Add library->Server RUntime

4. 部署tomcat

在servers面板 新建一个tomcat实例,再在该实例中,部署项目(右键 add)之后运行
在这里插入图片描述
在这里插入图片描述

[注意]:一般建议将eclipse中的tomcat与本地tomcat的配置信息保持一致,将eclipse中的
tomcat设置为托管模式:[第一次]创建tomcat实例之后,双击,选择Server Location的第二项


5. 统一字符集编码

5.1. 编码分类:

  1. 设置jsp文件的编码 (jsp文件中的pageEncoding属性): jsp->java 在这里插入图片描述

  2. 设置浏览器读取jsp文件的编码(jsp文件中content属性) 在这里插入图片描述

  3. 一般将上述设置成一致的编码,推荐使用UTF-8

文本编码:

  1. 将整个eclipse中的文件,统一设置(推荐) 在这里插入图片描述

  2. 设置 某一个项目 在这里插入图片描述

  3. 设置单独文件 在这里插入图片描述


6. JSP的页面元素:HTML java代码(脚本Scriptlet)、指令、注释

6.1 脚本Scriptlet:

//方式一
<%
  局部变量、java语句
%>
//方式二
<%!
  全局变量、定义方法
%>
//方式三
<%=输出表达式 %>
//方式一
<%
  String name = "zhangsan";
  out.print("hello, " + name);
%>
//方式二
<%!
  public String bookName; //全局变量
  public void init(){
    bookName = "java书籍";
  }
%>
//方式三 没有分号!
<%="hello, " + name %>

一般而言,修改web.xml、配置文件、java 需要重启tomcat
但是如果修改Jsp\html\css\js,不需要重启

[注意]
out.print & out.println()不能回车,想要回车:"<br/>",即out.print()<%= %>可以直接解析html代码

[解释]
先把java代码执行好,然后渲染到页面上

6.2 指令

page指令

<%@ page.... %>
  • language:jsp页面使用的脚本语言
  • import:导入类(包)
  • pageEncoding:jsp文件自身编码 jsp->java
  • contentType:浏览器解析jsp的编码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Date" %>

6.3 注释

  • html注释 <!-- --->可以被客户通过浏览器查看源码所观察到
  • java注释 // /*...*/
  • jsp注释 <%-- --%>

7. JSP九大内置对象(自带的,不需要new 也能使用的对象)

1. out

输出对象,向客户端输出

2. request

请求对象,存储 客户端向服务端发送的请求信息
在这里插入图片描述

request对象的常见方法:

  • String getParameter(String name): 根据请求的字段名Key(input标签的name属性值),返回字段值Value(nput标签的value属性值)
  • String[] getParameterValues(String name): 根据请求的字段名Key,返回多个字段值Value(checkbox)
  • void setCharacterEncoding("编码格式utf-8"); 设置post方式的请求编码(tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8
  • getRequestDispatcher("b.jsp").forward(request.response); :请求转发的方式跳转页面 A->B
  • ServletContext getServerContext():获取项目的ServletContext对象

示例:

注册页面

  1. register.jsp
  2. show.jsp
http://localhost:8888/MyJspProject/show.jsp?uname=ls&upwd=123&uage=28&uhobbies=%E7%AF%AE%E7%90%83
                                  连接/文件?参数名1=参数值1&参数名2=参数值2 &参数名3 =参数值3
  • get提交方式: method=“get” 和 地址栏 、超链接(<a href="xx">) 请求方式默认都属于get提交方式

get和post请求方式的区别

  1. get方式在地址栏显示请求信息(但是地址栏能够容纳的信息有限,4-5KB ;如果请求数据存在大文件,图片等会出现地址栏无法容纳全部的数据而出错);post不会显示
  2. 文件上传操作,必须是post

    推荐使用post

在这里插入图片描述

代码

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
    <title>register.jsp--request</title>
</head>
<body>
    <form action="show.jsp">
        用户名:<input type="text" name="uname" id=""><br>
        密码:<input type="password" name="upwd" id=""><br>
        年龄:<input type="text" name="uage" id=""><br>
        爱好:
        <input type="checkbox" name="uhobbies" id="" value="足球">足球、
        <input type="checkbox" name="uhobbies" id="" value="篮球">篮球
        <input type="checkbox" name="uhobbies" id="" value="乒乓球">乒乓球<br>
        <input type="submit" value="注册">
    </form>

</body>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
    <title>show.jsp--request</title>
</head>
<body>
    <%
        //设置编码
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("uname");
        int age = Integer.parseInt(request.getParameter("uage"));
        String pwd = request.getParameter("upwd");
        String[] hobbies = request.getParameterValues("uhobbies");
    %>

    注册成功,信息如下:<br>
    姓名:<%=name %> <br>
    年龄:<%=age %> <br>
    密码:<%=pwd %> <br>
    爱好:<br>
    <%
        if (hobbies != null) {
            for (String hobby: hobbies) {
                out.print(hobby + "&nbsp;");
            }
        }
    %>
</body>
</html>

8. 统一请求的编码 request

如果request编码不一致,我们怎么通过代码统一

get方式请求 如果出现乱码

解决:

  1. 统一每一个变量的 编码(不推荐)
new String(旧编码,新编码);
//例子
name = new String(name.getBytes("iso-8859-1"),"utf-8");
  1. 修改server.xml,一次性的 更改tomcat默认get提交方式的编码(utf-8)
    建议使用tomcat时,首先在server.xml中 统一get方式的编码…URIEncoding=“UTF-8”
    <Connector URIEncoding="UTF-8" connectionTimeout="20000" maxHttpHeaderSize="8192" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

在这里插入图片描述

之后通过get请求方式,都用UTF-8编码

tomcat7(iso-8859-1)
tomcat8(utf-8)

post方式请求 如果出现乱码,解决

setCharacterEncoding(“编码格式utf-8”);设置post方式的请求编码(tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb-03 统一字符集编码、JSP的页面元素、JSP九大内置对象-request 的相关文章

  • C++面向过程

    参考文档 xff1a C 43 43 教程 C 43 43 简介 概述 C 43 43 是一种静态类型的 编译式的 通用的 大小写敏感的 不规则的编程语言 xff0c 支持过程化编程 面向对象编程和泛型编程 C 43 43 是 C 的一个超
  • vector 指针 的指针

    vector 不能用指针 xff0c 用指针 xff0c push back会报错 xff0c size 也不对 vector本身用对象 xff0c 内容 简化为A 可以用指针 xff0c 当指针对象中还有指针B时 xff0c 就要用new
  • cmake find_package opencv 找不到

    目录 cmakelist设置方法ok 环境变量设置方法ok linux写法 cmakelists txt完整示例 find opencv lib find package OpenCV REQUIRED NO MODULE should b
  • liveplayer

    npm i 64 liveqing liveplayer S lt template gt lt div class 61 34 live player 34 gt lt div style 61 34 width 640px height
  • DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expecte

    DLT algorithm needs at least 6 points for pose estimation from 3D 2D point correspondences expected 39 count gt 61 6 39
  • 关于OSD

    OSD的主要实现方法和类型 目前有两种主要的OSD实现方法 xff1a 外部OSD发生器与视频处理器间的叠加合成 xff1b 视频处理器内部 支持OSD xff0c 直接在视频缓存内部叠加OSD信息 外部OSD发生器与视频处理器间的叠加合成
  • RTK使用笔记-千寻CORS模式

    一 千寻CORS模式 与基站 43 接收机1对1相比 xff0c 优点为携带方便 xff0c 也不用考虑10公里移动基站问题 xff1b 缺点为第一千寻CORS模式有自己基站涵盖范围 xff0c 所以需要提前确定好范围 xff08 下文有介
  • c/c++语言实现登陆界面

    C C 43 43 语言实现登陆界面 整体功能介绍 实现一个登陆界面 1 输出一个登陆界面 2 用户名能够实现邮箱验证 xff0c regex库 xff0c 密码要不可见 3 进度条的模拟实现 4 音乐播放 分步实现 1 输出一个登陆界面
  • _getch()函数的介绍

    getch 函数的介绍及实例演示 我们一般所使用的 getchar 函数在读入一个字符时必须按一下 Enter 键 xff0c 该代码才会继续运行 但是 getch 函数读入一个字符时 不用 enter 代码会继续跑 xff1b 最简单使用
  • 嵌入式常见面试题

    嵌入式LINUX常见面试问题总结 声明 xff1a 本文是将常见的面试问题进行汇总 xff0c 但大多数问题也是开发中较为常见的技术盲区 xff01 在此进行了汇总 xff0c 以便后续进行参考 xff01 所有的答案部分是自己编写 xff
  • LINUX基础试题大全(1)

    说明 xff1a 此文章由于题数庞大 xff0c 为方便阅读本人将其分为四篇文章为大家分享 xff01 答案会今后不断进行更新 xff01 LINUX基础试题大全 xff08 1 xff09 填空题题 LINUX基础试题大全 xff08 2
  • C语言 | 深入学习数组

    说明 xff1a 本文主要讨论一维数组 xff0c 适宜程度 xff1a 对C语言初步认识及想深入学习者 1 从编译器角度理解数组 从编译器角度理解来讲 xff0c 数组也是一个变量 xff0c 和普通的变量没有本质的区别 变量的本质指的是
  • C语言 结构体 联合体 | 嵌套使用

    一 简单的实例分析 题目 xff1a 获取0x12345678各个字节 答案 xff1a span class token comment 方法一 span span class token macro property span clas
  • Linux 网络编程笔记3 | 内存 系统调用

    七 内存 1 虚拟内存 物理内存 半导体内存和换页文件 虚拟内存 xff1a 地址空间 xff0c 虚拟的存储区域 xff0c 应用程序所访问的都是虚拟内存 物理内存 xff1a 存储空间 xff0c 实际的存储区域 xff0c 只有系统内
  • 树莓派替代品

    51单片机 转载于 https www cnblogs com wanghuaqiang p 11481958 html
  • C++ 笔记10 | 多态(polymorphic)

    span class token variable eg 实现图形库 xff0c 用于显示各种图形 span span class token variable 图形基类 span span class token punctuation
  • QT 笔记3 | Qt设计师使用 Qt创造器使用

    六 Qt设计师使用 designer 案例1 xff1a 使用设计师重构加法计算器 1 创建工程目录 mkdir Calculator2 2 进入工程目录 xff0c 执行 designer 启动设计师 1 xff09 在新建窗体界面 xf
  • QT 笔记5 |Qt多线程(QThread)

    一 Qt多线程 QThread 1 创建线程方法1 xff1a QObject moveToThread class Myclass public QObject Q OBJECT public slots void func void 耗
  • QT 笔记6 | Qt网络编程

    回顾 xff1a 1 Qt多线程 QThread 1 xff09 创建线程 方法1 xff1a moveToThread 方法2 xff1a 继承QThread xff0c 重写run函数 2 xff09 线程同步 互斥锁 xff1a QM
  • QT 笔记7 | UDP编程

    回顾 xff1a 1 xff09 控件类 QT 43 61 widgets QApplication Qt的gui应用程序 QWidget 控件基类 QLabel 标签 QPushButton 按钮 QDialog 对话框 QMainWin

随机推荐

  • 学习c语言

    今天学习了if语句和 xff45 xff4c xff53 xff45 运用 xff43 语言更加顺手 xff0c 之前一些都能实施 xff0c 真是太开心了 include lt stdio h gt int main 初始化 int pr
  • 求符合给定条件的整数集(做题)

    题目如上 xff1b 首先我们先想思路 xff1a 先来一个输入 xff0c 读入这个数 xff0c 然后我们需要三个变量来储存这三个数 xff1b 然后我们遍历所有的组合 xff0c 这个依靠循环 接下来是代码 xff1a include
  • 水仙花数(做题)

    代码如下 xff1a include lt stdio h gt int main int a scanf 34 d 34 amp a float t t 61 0 1 while a gt 0 t 61 t 10 a 判断几位数 int
  • 一分钟了解动态内存分配

    谈到这 xff0c 必然离不开malloc函数 在上面可以看出此函数需要一个头文件 include lt stdilb h gt 而且返回类型是void 传进去的是空间大小 xff0c 此函数申请的空间是字节为单位的 这其中的就分配了100
  • 动态内存分配深究

    接下来我们将探究以下三个问题 xff1a 1 相邻两次malloc得到的空间是否是连续的呢 xff1f 2 你得到的空间的实际大小是否就是你要求的大小呢 xff1f 3 如果你malloc零长度会得到什么结果呢 xff1f 第一个问题 xf
  • 同一个页面不打开两次

    lt script language 61 34 javascript 34 gt function popwin3 path window open path 34 cart 34 34 height 61 520 width 61 52
  • 超易懂!二分查找 详析

    二分算法的 本质 是 xff1a 假如我们可以找到事物的 某种性质 xff0c 这种性质 可以将区间一分为二 xff0c 一半满足 xff0c 一半不满足 我们就可以二分 另外 xff0c 有 连续性 必可以 二分 二分模板一共有两个 xf
  • 手摸手 Spring Cloud Gateway + JWT 实现登录认证

    你好 xff0c 我是悟空 前言 上篇我已经讲解了 Spring Cloud 的原理和实战 xff0c 这次就要结合 JWT 来实现登录认证的功能了 本文已收录至 深入剖析 Spring Cloud 底层架构原理 xff0c 已更新 18
  • 百行代码实现VLC简易视频播放器【VLC环境配置过程+可执行源码注释完整】

    文章目录 什么是VLC x1f680 VLC 库的集成 VLC环境配置演示 win10系统 43 vs2017 43 win64 x1f34e VLC 库的基本使用 x1f382 视频播放器实现 自定义函数Unicode2Utf8讲解 x1
  • HttpWebRequest 使用NetworkCredential 进行域认证下载时不成功 的解决方案

    最近在项目中使用pWebRequest 使用NetworkCredential 进行域认证下载时老不成功 xff0c 最后Google了解决方案 xff0c 发现几乎所有讨论的方案都不成功 xff0c 只好埋头自己解决 xff0c 最后总算
  • Firefox 的用户脚本管理器 greasemonkey 的使用一例

    一 什么是greasemonkey Firefox 的用户脚本管理器 greasemonkey 使你可以向任何网页添加DHTML语句 用户脚本 来改变它们的显示方式 就像CSS可以让你接管网页的样式 xff0c 而用户脚本 User Scr
  • Apache Http 服务器安装教程

    我在学习网络开发的时候需要从服务器上获得json数据 xff0c 所以在自己的电脑上安装了一个本地服务器 xff0c 其中遇到的一些问题 xff0c 在这里都写出来 首先 xff0c 我们需要访问apache http服务器的下载网页 xf
  • STM32的UART奇偶校验注意

    STM32的UART奇偶校验注意 STM32的UART在初始化时 xff0c 我们通常用到最多的就是无校验位 xff0c 1停止位 但是我在项目中也遇到某些芯片通信用的需要奇校验或者偶校验 xff0c 这里需要特别注意的是STM32中开启奇
  • Realtek RTL8762C/Realtek RTL8762D学习记录

    本人基于日常工作整理编写的8762C FAQ文档 xff0c 记录RTL8762C 8762D系列软件开发常见问题以及解决方案 希望它能发挥更多作用 帮到有需要的朋友 关键字 xff1a 8762CMF 8762CK 8762CJ 8762
  • 蓝牙BLE---DA14683的SPI主机通信讲解

    DA14683的SPI主机通信例程 Date 2018 12 19 Create Jim 导入例程 首先导入ble peripheral例程或者pxp reporter例程 再到以下位置打开硬件SPI的宏定义 xff1a 获取SPI例程源码
  • 06.5 Code

    06 5 Code 推力 force 推力的应用旋翼的气动阻力空气阻力矩滚转力矩电机的转速 推力 force span class token comment force 61 电机的转速 xff5c 电机的转速 xff5c xff08 带
  • C、C++ 对于char*和char[]的理解

    1 char 和char 的共同点 都是指针 xff0c 指向第一个字符所在的地址 2 char 的用法 char a 61 34 aaa 34 char p1 61 a char 是常量指针 xff08 常量的指针 xff09 xff0c
  • 重新抛出(rethrow)

    有可能单个catch不能完全处理一个异常 在进行了一些校正行动之后 xff0c catch可能确定该异常必须由函数调用链中更上层的函数来处理 xff0c catch可以通过重新抛出 rethrow 将异常传递给函数调用链中更上层的函数 重新
  • 4-2 图像聚类算法

    4 2 图像聚类算法 目录1 分类与聚类1 1 分类1 2 聚类1 3 聚类样本间的属性1 4 聚类的常见算法 2 K Means聚类2 1 概念2 2 步骤2 3 例子2 4 K Means聚类与图像处理2 5 K Means聚类优缺点优
  • JavaWeb-03 统一字符集编码、JSP的页面元素、JSP九大内置对象-request

    1 使用Eclipse开发Web项目 JSP项目 tomacat 2 在Eclipse中创建的Web项目 xff1a 浏览器可以直接访问WebContent中的文件例如 http 127 0 0 1 8888 MyJspProject in