jsp入门及内置对象,解决乱码,转发重定向,四大作用域

本文介绍了Web的基础概念,如HTTP协议、URL等,并详细解释了C/S与B/S架构的区别,主流Web服务器的特点,以及JSP技术的工作原理和常见用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概念:英文全称,中文意思
1.1、http:超文本传输协议(HyperText Transfer Protocol)
一种无状态协议,意思就是说服务器端和客户端浏览之间的不需要建立永久连接。

1.2、URL:统一资源定位符(Uniform Resource Locator),用来唯一标识互联网上的具体的计算机的命名约定。
URL的组成:
http://www.baidu.com?tn=9801
https://news.qq.com/a/20180826/048218.htm?tn=9801

 1http:协议部分
 2、www.baidu.com:主机地址和端口号(dns转换ip和端口号)
 3、/a/20180826/048218.htm?tn=9801&page=1:资源地址
     ?tn=9801:参数

1.3、C/S和B/S的区别?
C/S:Client(客户端)/Server(服务器)
B/S:Browser(浏览器)/Server(服务器)
a) C/S:
从数据维护来说:需要维护客户端和服务器端,
从安全性来说(偏向于局域网): C/S是优于B/S。
从技术来说:现在的一些技术B/S达不到,比如说游戏的游戏引擎
b) B/S:
从数据维护来说只需要维护服务器端,
从技术来说:现在的一些技术B/S达不到
未来的发展趋势向B/S的方向

2、主流Web服务器
Tomcat、JBoss、WebLogic、WebShare、

Tomcat服务器,特点是什么?
1、开源
2、资源占用小
3、轻量级的应用服务器

Tomcat的目录结构:
tomcat8
|__bin 可执行文件
|__conf 配置文件
|__lib tomcat所需的jar文件
|__logs tomcat启动过程中产生的日志文件
|__temp tomcat启动和执行过程中产生的临时文件
|__webapps 发布的web工程
|__work jsp编译后生成的.java和.class文件

3、jsp(全称:Java Server Page:运行在服务器的页面)
HTML:静态网页技术
JSP:动态网页技术, 在HTML里嵌入java代码
1、jsp在第一次访问时才会执行转换和编译的过程.
2、如果修改了jsp文件,那么在第二次访问时会重新进行转换和编译的过程。

3.1) jsp的组成:
a) 浏览器解析:html、javascript、style
b) java脚本:
b.1) jsp指令
b.1.1) page指令
<%@ page language=”java” import=”java.util.*”
pageEncoding=”ISO-8859-1”
contentType=”text/html; charset=ISO-8859-1” %>
language:开发语言,默认java
import:默认导入”java.util.*”,在本页面需要导入类或接口时,在这里配置,多个导入之间用逗号分隔
pageEncoding:配置本页的编码方式,默认是ISO-8859-1(tomcat的默认编码)
显示中文:
utf-8:支持国际化,比如日文,韩文
gbk2312:常用的简体中文
gbk:比gbk2312更多的汉字,包括简体和繁体。
contentType:配置编码方式,是指服务器发回给客户端的编码方式

             jsp文件的执行过程:
                1、将jsp文件转换为.java文件
                                                      是根据pageEncoding设置的编码读取文件内容转换为.java文件
                2、将.java文件编译成.class文件
                                                       由JVM根据utf-8格式转换为.class文件,外部控制不了的
                3、执行.class文件    
                                                       发送回客户端的编码是根据contentType来转换的。     

               tomcat底层对编码是有优化:
                  tomcat将jsp转换为java文件是按照pageEncoding->contentType的顺序查找
                  tomcat将发送响应到客户端时是按照contentType->pageEncoding的顺序查找

          b.1.2) include指令
          b.1.3) taglib指令

       b.2) jsp动作
            <jsp:include>和include指令的区别:

       b.3) jsp脚本:
          jsp声明: 
              <%!
                //java代码
              %>
          jsp表达式:并且最后不能加上";"
              <%=java代码 %>
          jsp小脚本:
              <%
                 //java代码 
              %>

    c) 注释:  
         html注释:<!-- html注释 -->在浏览器上看得到
         java注释:<%-- java注释 --%>在浏览器上看不到

3.2)jsp的内置对象有哪些?
内置对象:就是不需要手动new的对象.
输出:
1.out:输出对象
四大作用域:
2.pageContext:本页面作用域对象
3.request:请求对象-1次请求的对象
String getParameter(String name):获得指定请求参数名的值(单个参数名)
String[] getParameterValues(String name):获得指定请求参数名的值(一组相同名称的参数名)

   4.session:会话对象--包含多个请求的对象
     String getId():获得当前会话ID

   5.application:应用工程对象--包含多个会话

   6.response:响应对象
      response.sendRedirect(url);
      response.addCookie():添加1个Cookie对象返回到客户端浏览器

   7.page:相当于this对象
   8.config:ServletConfig对象
   9.exception:异常对象

       练习:注册功能
       用户名,密码,邮箱,兴趣爱好,将这些值在第2个页面输出

3.3)4大作用域:从小到大的顺序
pageContext–>request–>session–>application
pageContext:可以访问本页面作用域范围内设置的值 (本页面)
request:可以访问1次请求内的作用域范围内设置的值 (无论跳转了多少个页面,只要在当前请求内)
session:可以访问当前会话内的作用域范围内设置的值 (无论发了多少次请求,只要在会话内)
application:可以访问当前工程应用内的作用域范围内设置的值 (无论有多少个会话,只要在当前工程应用内)

   void setAttribute(String name,Object value):设置属属性名对应的值
   Object getAttribute(String name):根据指定name取值

3.4)session和cookie的区别
session中保存的数据存储于服务器端
cookie中保存的数据存储于客户端浏览器
安全性问题:
服务器端保存数据安全性高于客户端浏览器。
考虑什么数据保存在session中,什么数据保存在cookie。
安全性要求比较高的数据保存于Session中,安全性要求没那么高,不需要保密的数据就可以存储于cookie中。

3.5)get和post的区别
a) get在网址栏时会显示出提交的请求数据,get安全不高
提交的数据量拼接在url后面,所以是字符串长度限制的。256K
b) post在网址栏是不会显示提交的请求数据,post的安全性会高
数据量4M

3.6)转发和重定向的区别
a) 转发
属于1次请求内,请求后跳转的页面需要前面(前一页面)页面数据时,在网址栏只会显示第1次请求的页面
request.getRequestDispatcher(url).forward(request,response)
b) 重定向:通知浏览器发出第二次请求,不能共享前面页面的数据,并且网址栏的内容会变成重定向后的页面
response.sendRedirect(url);

3.7)中文乱码问题
1.post
1.1) 使用new String();
1.2) 通过request.setCharacterEncoding(“utf-8”);

   2.get
     2.1) 使用new String(); 
     2.2) 如果在tomcat8之前,需要修改/conf/server.xml文件
          <Connector port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000" URIEncoding="utf-8"
                redirectPort="8443" /> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值