Action代码
package com.zxc.action;import java.net.URLEncoder;public class XiaoZAction {
private String username; public String getUsername() { return username; }
public String execute() throws Exception{
username = URLEncoder.encode("周小川", "utf-8"); return "success"; }}
struts.xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="xzc" namespace="/test" extends="struts-default">
<action name="list" class="cn.itcast.action.XiaoZAction">
<result type="redirect">/xiaox.jsp?username=${username}</result>
</action>
</package>
</struts>
jsp页面代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.net.URLDecoder"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona ......
JSP内置对象(9个常用的内置对象)
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
序号 方 法 说 明
1 object getAttribute(String name) 返回指定属性的属性值
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
3 String getCharacterEncoding() 返回字符编码方式
4 int getContentLength() 返回请求体的长度(以字节数)
5 String getContentType() 得到请求体的MIME类型
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流
7 String getParameter(String name) 返回name指定参数的参数值
8 Enumeration getParameterNames() 返回可用参数名的枚举
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
10 String getProtocol() 返回请求用的协议类型及版本号
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等
12 String getServerName() 返回接受请求的服务器主机名
13 int getSer ......
JSP中的跳转:
(1). forward()方法
使用到javax.servlet.RequestDispatcher类
RequestDispatcher rd = getServletContext().getRequestDispatcher("url");
rd.forward(requestVar,requestVar); //传递servlet的入口参数
/*forward函数已经把原页面的request,response对象传入新的页面,因此这新旧页面拥有相同的request,response对象。request.getparameter("var")就可以得到相应的值.*/
/*forward()是直接在server做的,浏览器并不知道,也不和浏览器打交道,浏览器的地址不变化。*/
即:
getServletContext().getRequestDispatcher("url").forward(requestVar,responseVar);
服务器端Servlet进行转向的4种方法:
1.ServletContext的getRequestDispatcher()
2.ServletContext的getNamedDispatcher()
3.ServletRequest的getRequestDispatcher()
4.ServletResponse的sendredirect()进行转向。
forward方法,因为这些这样比较高效。只有在forward方法不能使用时,再使用servletresponse的sendredirect()方法。
(2).response.sendRedirect(url);
其实是向浏览器发送一个特 ......
一个tag就是一个普通的java类,它惟一特别之处是它必须继承TagSupport或者BodyTagSupport类。这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。而这两个类是由jsp容器提供的,无须开发人员自己实现。换句话说,你只需把实现了业务逻辑的类继承TagSupport或者BodyTagSupport,再做一些特别的工作,你的类就是一个Tag。并且它自己负责和jsp 页面的交互,不用你多操心。
“特别的工作”通常有以下几个步骤:
[1]提供属性的set方法,此后这个属性就可以在jsp页面设置。以jstl标签为例 c:out value=""/,这个value就是jsp数据到tag之间的入口。所以tag里面必须有一个setValue方法,具体的属性可以不叫value。例如setValue(String data){this.data = data;}
这个“value”的名称是在tld里以attribute元素存在的。
取什么名字都可以,只需tag里提供相应的set方法即可。
[2]处理 doStartTag 或 doEndTag 。这两个方法是 TagSupport提供的。 还是以c:out value=""/为例,当jsp解析这个标签的时候,在“<”处触发 doStartTag 事件,在“>”时触发 doEndTag 事件。通常在 ......
JSP页面间传递参数方法介绍
本文介绍了JSP页面间传递参数的几个方法。最直接的方法就是直接在URL请求后添加,不过多个页面的情况会复杂一些。
JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数。下面介绍一下实现的方法。
(1)直接在URL请求后添加
如:< a href="thexuan.jsp?action=transparams&detail=directe">直接传递参数< /a>
特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码:
response.sendRedirect("thexuan.jsp?action=transparams&detail=directe") ,可用request.getParameter(name)取得参数
(2)jsp:param
它可以实现主页面向包含页面传递参数,如下:
< jsp:include page="Relative URL"> < jsp:param name="param name" value="paramvalue" /> < /jsp:include>
还可以实现在使用jsp:forward动作做页面跳转时传递参数,如下:
< jsp:forward page="Relative URL"> < jsp:param name="paramname" value="paramvalue"&nbs ......
<%@ page contentType="text/html;charset=GBK"%>
<div id="divDisable" style="display: none;width:expression(document.body.offsetWidth); height:100%; z-index: 1000; position: absolute;left: 0px; top: 0px;filter:alpha(opacity=50); background-color:White">
</div>
<div id="divWaiting" style="display: none; z-index: 900; left: 25%; right: 25%; position: absolute;
text-align: center; width: 50%; height: 50px; border-right: #0099FF 1px solid;
border-top: #0099FF 1px solid; border-left: #0099FF 1px solid; border-bottom: #0099FF 1px solid;
background-color: #f9fff6; left: expression((this.offsetParent.clientWidth/2)-(this.clientWidth/2)+this.offsetParent.scrollLeft);
top: expression((this.offsetParent.clientHeight/2)-(this.clientHeight/2)+this.offsetParent.scrollTop);">
<br>
<table border="0" >
......