JSP介绍+JSP数据传递保存+九大内置对象+四个作用域+cookie

程序架构分类

B/S:浏览器--服务器

C/S:客户端--服务器

Client/Server架构,即客户端/服务器架构。是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。

比如: QQ 微信 等 他们属于C/S默认,Client 需要再自己电脑上安装QQ软件,通过网络可以QQ的服务器

Web服务器Tomcat

目录说明
/bin存放各种平台下用于启动和停止Tomcat的脚本文件
/conf存放Tomcat服务器的各种配置文件
/lib存放Tomcat服务器所需的各种JAR文件
/logs存放Tomcat的日志文件
/tempTomcat运行时用于存放临时文件
/webapps当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中
/workTomcat把由JSP生成的Servlet放于此目录下

修改web项目初始化启动页面

在web.xml中添加:

<welcome-file-list>
    <welcome-file>/index.html</welcome-file>
</welcome-file-list>

JSP页面

Java Server Pages(HTML+JS+CSS+Java):运行在服务器端的Java页面。

使用HTML嵌套Java代码实现,工作原理:

脚本语言

\<%@page%> 用来设置一个JSP页面的属性

<%out.print();%><%out.println();%> 实现页面输出

使用<%out.print();%> 输出时,显示数据来自于数据库。

JSP可以添加的注释

  • HTML注释:<!--HTML注释-->

  • JSP注释:<%--JSP注释--%>

  • JSP脚本中注释:<%//单行注释%><%/多行注释/%>

page指令通过属性定义了JSP的特性,实现与JSP容器的通信

<%@ page language="属性值" import="属性值" contentType="属性值"%>

属性说明
language指定JSP页面使用的脚本语言
import通过该属性来引用脚本语言中使用到的类文件
contentType用来指定页面的MIME类型,以及字符编码方式
page指令 contentType文档类型和编码 language使用语言
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
​
引入Java包
<%@ import="StudentServer" %>
​
注释
<%-- 注释 --%>
​
向页面输出
<% out.print(name); %>
​
方法定义
<%! 方法 %>

out对象是JSP的内置对象,无需实例化即可使用

属性说明
print向页面输出显示
println向页面输出显示,在结尾处添加换行

Web程序常见错误

jsp运行到网页后出现404报错

404 not found

运行时,URL输入错误 将页面放在WEB-INF下(路径原因)

外部启动Tomcat,未部署项目

500 错误:JSP页面代码有误

页面无法显示:未启动Tomcat

错误替换

在web.xml下:

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/500.html</location>
</error-page>

JSP数据传递保存

获取表单

请求对象:request

public String getParameter(String name)

String userName= request.getParameter("userName");
​
//存入值
request.setAttribute("name","张三");
//获取值
String name = request.getAttribute("name").toString();

get与post区别

比较项GETPOST
参数出现在URL中
长度限制
安全性
URL可传播

request对象

方法名称说明
String getParameter(String name)根据表单组件名称获取提交数据
String[ ] getParameterValues(String name)获取表单组件对应多个值时的请求数据
void setCharacterEncoding(Stringcharset)指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path)返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

JSP九个内置对象

1、request对象

request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

2、response对象

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

3、session对象

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为“Key/value”。 session对象的value可以使用复杂的对象类型,而不仅仅局限于字符串类型。

4、application对象

application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

5、out 对象

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

6、pagecontext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在]SP页面中可以直接使用 pageContext对象。

7、config 对象

config对象的主要作用是取得服务器的配置信息。通过 pageconext对象的 getServletConfig() 方法可以获取一个 config对象。当一个Servlet初始化时,容器把某些信息通过 config对象传递给这个 Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

8、page 对象

page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于java编程中的 this 指针。

9、exception对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true"的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和java的所有对象一样,都具有系统提供的继承结构。 exception 对象几乎定义了所有异常情况。在java程序中,可以使用try/catch关键字来处理异常情况;如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

JSP四个作用域

1.pageContext是当前页面;

2.request/response是当前请求周期:request是一次请求(客户端向服务器),response是一次响应(服务器向客户端);

3.session是一次会话(一次请求,一次响应);

4.application是全局范围,只要app存在就有作用。

中文乱码

JSP中默认使用的字符编码方式:iso-8859-1,不支持中文

常见的支持中文的编码方式

编码方式收录的字符
gb2312常用简体汉字
gbk简体和繁体汉字
utf-8所有国家需要的字符

解决中文乱码

设置请求和响应的编码方式

post请求出现乱码

  • request.setCharacterEncoding("utf-8");

  • response.setCharacterEncoding("utf-8");

  • <%@ page language="java" contentType="text/html; charset=utf-8"%>

get请求出现乱码

  • 治标的方法:new String( s.getBytes("iso-8859-1"), "utf-8" );

  • 治本的方法:配置tomcat\conf\server.xml文件

    • URIEncoding="UTF-8"

    • useBodyEncodingForURI="true"

转发与重定向

request转发

RequestDispatcher对象

forward()方法

1、request.getRequestDispatcher("url").forward(request, response)

2、<jsp:forward page="url" />

response重定向

将用户请求重新定位到一个新的URL

response.sendRedirect("url")

区别

//转发
request.getRequestDispatcher(B页面路径).forward(request, response);
​
//重定向
response.sendRedirect("url");
  1. 转发url没有发生变化,而重定向会

  2. 转发不会重新发送请求,重定向会

  3. 转发可以携带参数,而重定向不可以

  4. 转发只可跳转当前项目路径,而重定向可以跳转任意url

重定向是客户端行为,转发是服务器行为

比较项转发重定向
URL变化
重新发出请求不会
是否携带请求
目标URL要求仅本Web应用任意URL

session

作用域是当前会话,关闭浏览器就结束当前会话,不关闭就不结束。每个会话都有一个会话id:sessionid

//存入值
session.setAttribute("name","张三");
//输出sessionID
out.print(session.getID());
//获取值
String name = session.getAttribute("name").toString();
​
//清空session中name键的值
session.removeAttribute("name");
//设置60s非session活动时间后清除session中的值
session.setMaxInactiveInterval(60);

application

作用于整个app,只有服务器关闭的时候会结束。

//存入值
application.setAttribute("name","张三");
​
//获取值
String name = application.getAttribute("name").toString();
​
servlet中获取:
ServletContext application = this.getServletContext();

cookie

cookie以文件方式保存数据,如记住密码

//cookie的使用
//如果有中文
username = URLEncoder.encode(username,"utf-8");
Cookie cookie = new Cookie("username",username);
//设置路径,这个路径即该工程下都可以访问该Cookie 如果不设置路径,那么只有设置该Cookie路径及其子路径可以访问
cookie.setPath("/");
//设置cookie生命周期
cookie.setMaxAge(60*60);
response.addCookie(cookie);
​
//获取cookie
    Cookie[] cookies = request.getCookies();
    if(cookies!=null && cookies.length!=0){
        for(int i=0;i<cookies.length;i++){
            System.out.println(cookies[i].getName());
            if(cookies[i].getName().equals("username")){
                username = cookies[i].getValue();
                username = URLEncoder.decode(username,"utf-8");
            }
        }
    }

  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值