J2EE 3.JSP内置对象

JSP内置对象

不需要创建的对象:9个,常用的5个:resquest 、response、session、application和out

提交的信息

<form  action= “JSP页面”  method= get | post  >

    提交手段

</form>

request对象使用getParameter(String s)方法获取表单提交的信息.

处理汉字信息两种方法

1.对信息重新编码

request将获取的信息重新编码,即用ISO-8859-1(JSP默认编码)进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串。如下列所示:

String str=request.getParameter("message");

byte  b[]=str.getBytes("ISO-8859-1");

str=new String(b,“gb2312”);

2.request设置编码

     request在获取信息之前使用setCharacterEncoding方法设置自己的编码为gb2312:(页面charset编码)

     request.setCharacterEncoding("gb2312");

 

内置对象request常用方法如下:

getProtocol()  获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。

getServletPath()  获取用户请求的JSP页面文件的目录。

getContextPath() 获取用户请求的当前Web服务目录。

getRemoteAddr()  获取用户的IP地址。

getRemoteHost()  获取用户机的名称(如果获取不到,就获取IP地址)。

getServerName()  获取服务器的名称。

getServerPort()  获取服务器的端口号。

<form> 标记

get方法和post方法的主要区别是:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中

<input>标记

<input  type="输入对象的GUI类型"  name= "名字">

GUI类型

1)文本框text

   <input type="text" name="me"  value="hi"   maxlength="30">

2)单选框radio

   <input type="radio"  name="rad"  value="red"   algin= "top"  checked="java" >

3)复选框checkbox

  <Input type="checkbox"  name= "ch"  value="pink"   algin= "top"  checked="java">

4)口令框password

  <input type= "passwordt"  name= "me" size= "12"  maxlength="30">

5)隐藏hidden

   <input type= "hidden"  name="h"  value= "123"  >   request对象调用getParemeter方法,通过name的名字来获取由value指定的值。

6)提交键submit

7)重置键:reset

     <input type="reset" >

 <select>、<option> 标记

在select中增加size属性的值就变成滚动列表,size的值是滚动列表的可见行的数目。

<select name="myName"  size="正整数">

  <option  value="item1">

</select>

<textArea  name="名字"  rows= "文本可见行数"  cols= "文本可见列数"  >

</textArea>

<table >

    <tr  width="该行的宽度">

        <th  width= "单元格的宽度" >单元格中的数据</th>

        <td  width= "单元格的宽度" >单元格中的数据</td> …

    </tr>

</table>

<image  src="图像文件的URL" >描述文字</image>可以使用width和height属性

<embed  src="音乐或视频文件的URL" >描述文字</embed > autostart属性,是否立刻播放,loop属性,width和height属性

<a href=链接的页面地址? >文字说明</a>

response 对象

动态响应contentType属性setContentType

 

split利用正则表达式分割有多个空字符串[]正则^取反

web目录上下文(项目地址):request.getContextPath();

javaEE在线文档

几个单选按钮、几个复选框的名字要一样,同一组

响应也包括一些头。response对象可以使用方法

addHeader(String  head,String value);

或setHeader(String head ,String value)

头中refresh设置刷新时间

response重定向sendRedirect(URL url)

response对象的setStatus(int n)方法来改变响应的状态行的内容

 

 

 

得到参数:

单个request.getParameter

多个request.getParameterValues

 

音乐放在webContent

 

Table标记

Th Tr Td

Java+标签 动态生成表单(标签要放在<%%>外)

<img scr></img>标记

嵌入视频embed

 

处理超链接

     <a href=链接的页面地址?参数1=串值1&参数2=

       串值2& 参数n=串值n >文字说明</a>

?&的格式

 

接收参数:String A=request.getParameter("sizeA");

  转换类型  double a=Double.parseDouble(A);

处理中文:

request.setCharacterEncoding("gb2312");

        String information_fees=request.getParameter("information_fees");

        double number=0;

        if(information_fees==null) {

           information_fees="";

        }

分割

String []a = information_fees.split("[^0123456789.]");

double sum=0;

        for(String s:a) {

           try {

             sum+=Double.parseDouble(s);

           }

           catch(NumberFormatException exp){}

 

 

响应

contentType也可(解析方法)

response.setContentType(String s)

如响应Excel表格

addHeader设置头的值,刷新

页面重定向:.sendRedirect(url)

 

response状态码200正确500服务器内部错误

 

session对象

http是无状态协议,不保留连接信息

session记录连接信息

  1. session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户的Cookie中。
  2. 简单地说,用户在访问一个Web服务目录期间,服务器为该用户分配一个session对象(称作用户的会话),服务器可以在各个页面使用这个session记录当前用户的有关信息。而且服务器保证不同用户的session对象互不相同。

浏览器没关闭,不同页面同一个sessionID

不支持cookie时,URL重写,向新的URL添加session传递

session对象使用下列方法处理数据:

1.public void setAttribute (String  key ,Object  obj)

session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字。

2.public Object getAttribute(String key)

获取session对象索引关键字是key的对象。

使session失效:invalidate()方法使得session无效或session对象达到了设置的最长的“发呆”状态时间以及是否关闭服务器,默认session30分钟

application对象

(1) public void setAttribute(String  key ,Object  obj)

application对象可以调用该方法将参数Object 指定的对象 obj添加到application对象中,并为添加的对象指定了一个索引关键字。

(2) public Object Attribute(String key)

获取application对象含有的关键字是key的对象。

out 对象

out.print out.println

实验

实验3_1 request对象

编写一个JSP页面input.jsp,该页面提供一个表单,用户可以通过表单输入两个数和四则运算符号提交给该页面。用户提交表单后,JSP页面input.jsp将计算任务交给另一个JSP页面result.jsp去完成。

  1. input.jsp的具体要求

input.jsp页面提供一个表单,要求表单中提供两个text输入框,供用户输入数字;提供一个下拉列表,该下拉列表有加、减、乘、除四个选项,供用户选择运算符号。用户在表单中输入的数字、选择运算符号提交给result.jsp页面。

  1. result.jsp的具体要求

要求result.jsp页面获取input.jsp提交的数据,并计算出相应的结果显示给用户。

Debug:java比较字符串用equals不用==

<!-- input.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'input.jsp' starting page</title>
  </head>
  <body>
    This is my JSP page. <br>
    <form action="result.jsp" method="get">
    	<input type="text" name="num1">
    	<select name="op">
    		<option value="+">+
    		<option value="-">-
    		<option value="*">*
    		<option value="/">/
    	</select>
    	<input type="text" name="num2">
    	<input type="submit" value="提交">
    </form>
  </body>
</html>
<!-- result.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'result.jsp' starting page</title>
  </head>
  <body>
    This is my JSP page. <br>
    <%
    	String s1=request.getParameter("num1");
    	String s2=request.getParameter("num2");
    	String op=request.getParameter("op");
    	double result=0;
    	int num1=0;
    	int num2=0;
    	if(s1!=null&&s1.length()!=0){
    		num1=Integer.parseInt(s1);
    	}
    	if(s2!=null&&s2.length()!=0){
    		num2=Integer.parseInt(s2);
    	}
    	/* out.print(op); */
    	if(op.equals("+")){result=num1+num2;out.print(result);}
    	else if(op.equals("-")){result=num1-num2;out.print(result);}
    	else if(op.equals("*")){result=num1*num2;out.print(result);}
    	else if(op.equals("/")){result=num1/num2;out.print(result);}
     %>
  </body>
</html>

实验3_2 session对象

本实验编写3个JSP页面login.jsp,show.jsp和exit.jsp。login.jsp页面提供一个表单,用户可以通过表单输入姓名提交给login.jsp页面,login.jsp页面将用户的姓名存放到用户的session(会话)中。如果用户链接到show.jsp页面,该页面将检查用户的session中是否存放了姓名,否则就将用户重新定向到login页面;如果用户链接到exit.jsp页面,exit.jsp将销毁用户的session。

  1. login.jsp的具体要求

login.jsp页面提供一个表单,要求表单中提供一个text输入框,供用户输入名字提交给当前页面,login.jsp页面将用户输入的名字存放到用户的session(会话)中。

  1. show.jsp的具体要求

要求show.jsp页面可以显示一幅图像。但前提条件是,用户事先必须在session中存放有名字,否则无法看到图像,而且还会被重新定向到login.jsp页面。

  1. exit.jsp的具体要求

用户一旦访问exit.jsp页面,用户的session对象将被销毁,用户必须重新访问其他的页面获得新的session。

Debug:

重定向response.sendRedirect("login.jsp");

会话失效session.invalidate();

连接<a href

<!-- login.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
    This is my JSP page. <br>
    <a href="show.jsp">show.jsp</a>
    <a href="exit.jsp">exit.jsp</a>
    <form action="" method="get">
    	<input type="text" name="name">
    	<input type="submit" value="提交">
    </form>
    <%
    String name=request.getParameter("name");
    session.setAttribute("name", name);
     %>
  </body>
</html>
<!-- show.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'show.jsp' starting page</title>
  </head>
  
  <body>
    This is my JSP page. <br>
    <%
    String name=session.getAttribute("name")+"";
    out.print(name);
    if(name!=null&&name.length()!=0){
    	%><img alt="图片" src="dad.jpg" ><%
    }else{
    	response.sendRedirect("login.jsp"); 
    }
     %>
  </body>
</html>
<!-- exit.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
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>
  </head>
  
  <body>
    This is my JSP page. <br>
    <%
    session.invalidate();
     %>
     会话失效
  </body>
</html>

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值