JSP数据交互(一)
什么是JSP内置对象?
JSP常用的内置对象有:
JSP内置对象request:
request对象的方法:
实例:
注册页面index.jsp的代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<FORM action="MyJsp.jsp" method="post" name="myform">
<TABLE border="0" cellpadding="0" cellspacing="0" align="center" width="530">
<TR>
<TD height="108" colspan="2"><IMG src="images/top.jpg"></TD>
</TR>
<TR>
<TD width="107" height="36">用户名:</TD>
<TD width="524"><INPUT name="txtUser" type="text" maxlength="16">只能输入字母或数字,4-16个字符</TD>
</TR>
<TR>
<TD width="107" height="36">密码:</TD>
<TD width="524"><INPUT name="txtPass" type="password">密码长度6-12位</TD>
</TR>
</TABLE>
</FORM>
</body>
</html>
注册提交页面MyJsp.jsp的代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'MyJsp.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
%>
<h1>用户名:<%=name %></h1>
<h1>密码:<%=pwd %></h1>
</body>
</html>
代码说明:
(1)request的getParameter( )方法是最为常用的,使用此方法可以获得请求中所提交的参数值。例如,注册页面(index.jsp)通过HTML表单为注册提交页面(MyJsp.jsp) 提交了两个参数,名称分别为name和pwd,通过调用request.
getParameter( “ name”)和request getParameter(" pwd” )就可以获取这两个参数的值。
(2) request 对象的setCharacterEncoding( )方法用于设置字符集,可以用来解决中文乱码问题。为什么会出现中文乱码问题?常用字符集编码有ASCI. ISO- 8859-1. GB2312. GBK、Unicode. UTF-8等,Jave在其内部使用Uicode字符集来表示字符,这样就存在Uicode字符集和本地字符集进行转换的过程。在Web应用中,通常都包括了浏览器、Web 服务器、Web 应用程序和数据库等部分,每-部分都有可能使用不同的字符集,从而导致字符数据在各种不同的字符集之间转换时,出现乱码问题。
对于中文乱码问题,根据产生的原因,主要有以下几种解决方案。
➢以POST方法提交的表单数据中有中文字符时。
Toncar对请求数据默认采用ISO 889 -1字符集进行解码,requet 对象的geParmeter( )方法得到的字符串是以10-88转换而来的。所以在获取请求参数值之前,调用sCaleCnodinn UTF-8” )方法, 将请求的解码方式设定为UTF- 8.注意:页面和浏览器发送请求也应一致使用UTF-8编码, 通过JSP页面设置p指令的cenve属性.指定页面内容的编码格式如下。
<% @ page contentType="text/html; charset=UTF-8" %>
说明:cnenTrpe和paEnoding的区则: cnenTYpe定义响应的资源类型,也可以包含JSP页面和响应内容的字特美:
ngeneotre相定ISP文件的字符集及欧认的cnmenTpe字符集。
以GET方法提交的表单数据中有中文字符时。
当采用GET方式提交表单时,提交的数据作为查询字符串被附加到URL的末端发送到服务器,对于这部分数据,在服务器端调用setCharacterEncoding( )方法是不起作用的,我们需要得到请求参数值后,进行编码转换。如示例1中,将表单的提交方式改为method= “get”, 则在注册提交页面reginto. isp中将获得用户名的代码修改为
String name - request .getParameter ("name");
name”Dew String (name.getBytes("IS0-8859-1"),"UTF-8");
其中,nem getByes( “ISO 8859-1” )是按照"ISO- 8859-1” 字符集编码把name字符串转换为bre数组,再通过 new Sring )方法,使用指定的“UTF-8" 字符集把byte数组构造为一一个新的String.
➢在Tormcat中设置字符集。
当表单采用GET方法提交时,虽然可以通过构造一个新的String 的方式解决中文乱码问题,但是当获取多个参数值时,每个参数都进行重新编码,操作比较烦琐,效率也不高。这时可以通过在Tomcat中设置字符集的方式解决,配置方式如下:找到Tomcat目录结构\conf\server xml文件.在Conectr>元素中添加URiEncoding属性,将它的值设置为"UTF- 8”。 代码如下所示:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
提示如果在Tomcat 中设置了字符集编码,对于浏览器以GET方式提交的数据则无须在JSP
页面中再进行重新编码处理(注 意浏览器需以UTF-8编码发送URL)。
JSP内置对象response
请求的转发
什么是会话?
JSP内置对象session
session与窗口的关系:
实例代码
实例代码
session的失效
include指令: