下面是对JSP页面间传值问题实例简析的完整攻略:
1. 问题分析
在使用JSP进行web页面开发的过程中,经常需要使用多个JSP页面来完成相应的业务功能,这时候我们就需要在不同的JSP页面之间传递参数或对象。
JSP页面间传值的情景:
- 当我们在JSP页面中调用另外一个JSP页面或Servlet时,可能需要将当前页面中的某些数据传递给其它页面或Servlet进行处理
- 当我们在JSP页面中完成某些业务处理后,需要将处理的结果返回给前台页面进行展示
传递数据的方式:
- 参数传递
- 对象传递
- session作用域传递
- application作用域传递
2. 参数传递
2.1 使用表单传递参数
在一个表单中,我们可以使用input、textarea、select等标签将数据收集起来,并通过form标签的action属性将值传递到另一个JSP或Servlet中进行处理。
示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表单传参示例</title>
</head>
<body>
<form action="handle.jsp" method="post">
<label>姓名:</label><input type="text" name="name" /><br>
<label>年龄:</label><input type="text" name="age" /><br>
<input type="submit" value="提交">
</form>
</body>
</html>
在另一个页面或Servlet中读取数据的示例:
String name = request.getParameter("name");
String age = request.getParameter("age");
out.print("姓名:" + name + "<br/>");
out.print("年龄:" + age + "<br/>");
2.2 使用链接传递参数
除了表单传递参数,我们还可以使用超链接的方式进行参数传递。因为在点击a标签时,浏览器会自动将链接地址跳转到一个新的页面,通过这个新的页面相对路径后面跟上问号(?)和参数名称和参数值来实现携带参数跳转到目标页面。
示例代码:
<a href="target.jsp?name=TOM&age=18">跳转页面</a>
在目标页面中读取参数的示例:
String name = request.getParameter("name");
String age = request.getParameter("age");
out.print("姓名:" + name + "<br/>");
out.print("年龄:" + age + "<br/>");
3. 对象传递
对象传递一般是在对象一方将对象封装起来后,通过请求转发或重定向的方式将对象传递给另一个页面或Servlet,在后者中调用封装在对象中的方法。
示例代码:
public class Person {
private String name;
private Integer age;
//getter、setter方法
//注意,要使对象可以进行序列化(实现Serializable接口)
}
封装对象示例:
Person person = new Person();
person.setName("TOM");
person.setAge(18);
request.setAttribute("person", person);//将person对象封装后存储进request域中
在另一个页面或Servlet中读取对象示例:
Person person = (Person)request.getAttribute("person");
out.print("姓名:" + person.getName() + "<br/>");
out.print("年龄:" + person.getAge() + "<br/>");
4. session作用域传递
在JSP和Servlet中,可以使用Session技术在同一个项目中的所有页面之间传递数据。
示例代码:
在第一次JSP页面调用handle.jsp时,将数据存储进session域中:
session.setAttribute("userName", userName);
在另一个页面中读取session域中的值:
String userName = (String) session.getAttribute("userName");
5. application作用域传递
在同一个WEB应用程序中,所有页面都可以通过Application对象共享数据。
示例代码:
在第一次页面调用时,将数据存储进application域中:
ServletContext application = request.getServletContext();
application.setAttribute("count", count);
在另一个页面中读取application域中的值:
ServletContext application = request.getServletContext();
int count = (int)application.getAttribute("count");
以上就是JSP页面间传值问题实例简析的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP页面间传值问题实例简析 - Python技术站