Jsp编程课时五 JavaBean和JSP六大标签的使用。
第一部分看一下面案例 化繁为简 Java中如何定义一个标准的类 有参 无惨 get set tostring
package comExtends.Animal; public class Animal extends Object{ public String age ; //年龄 public String sex;//性别 public String height ;//身高 public String weight; //体重 public String color; public String name; public Animal() { // TODO Auto-generated constructor stub System.out.println("这是无参构造"); } }
package comExtends.Animal; public class AnimalTest { public static void main(String[] args) { // TODO Auto-generated method stub //创建对象 Animal a =new Animal(); a.name="animal"; a.color="yelow"; a.age="12"; a.height="123"; a.lookforagirfriend(); a.sleep(); System.out.println("获得动物对象"+a.name); System.out.println("获得动物色彩"+a.color); System.out.println("获得动物对象"+a.age+"年"); System.out.println("获得动物色彩"+a.height+"cm"); System.out.println("==============第一个动物"); Animal b =new Dog(); b.name="Dog"; b.color="black"; b.age="12"; b.height="123"; b.eat(); b.lookforagirfriend(); System.out.println("获得动物对象"+b.name); System.out.println("获得动物色彩"+b.color); System.out.println("获得动物对象"+b.age+"年"); System.out.println("获得动物色彩"+b.height+"cm"); System.out.println("==============第二个动物"); Animal c =new pig(); c.name="Dog"; c.color="black"; c.age="20"; c.height="103"; c.weight="45"; c.eat(); c.lookforagirfriend(); c.run(); System.out.println("获得动物对象"+c.name); System.out.println("获得动物色彩"+c.color); System.out.println("获得动物对象"+c.age+"年"); System.out.println("获得动物色彩"+c.height+"cm"); System.out.println("获得动物体重"+c.weight+"kg"); } }
package comExtends.Animal; public class cat extends Animal{ public cat() { // TODO Auto-generated constructor stub } public cat(String age, String sex, String height, int weight, String color) { super(); // TODO Auto-generated constructor stub } }
package comExtends.Animal; public class Dog extends Animal{ public Dog() { // TODO Auto-generated constructor stub } public Dog(String age, String sex, String height, int weight, String color) { super(); // TODO Auto-generated constructor stub } }
package comExtends.Animal; public class pig extends Animal{ public pig() { // TODO Auto-generated constructor stub } public pig(String age, String sex, String height, int weight, String color) { super(); // TODO Auto-generated constructor stub } }
第二部分JavaBean的概念。
JavaBean是可复用的、平台独立的软件组件
JavaBean既可以是简单的GUI要素,如按钮和滚动条,也可以是复杂的可视化软件组件,如数据库视图
有些JavaBean是没有GUI表现形式的,常用来封装事务逻辑、数据库操作等等
我们可以把遵循某种规范的Java类称为JavaBean:
这个类是可序列化的
这个类必须带有一个无参的构造方法
这个类的属性必须通过get 、set和其他标准命名规范来命名的方法进行操作
这个类包含事件处理方法
第三部分java代码中JSP标签的过程
方案一假如我用Session存放数据取出数据
<h1>==============方案一存储数据============</h1> <% session.setAttribute("name", "小YI"); session.setAttribute("id", "007"); session.setAttribute("phone", "123456789123"); session.setAttribute("age", "21"); session.setAttribute("addr", "江西南昌"); session.setAttribute("sex", "男"); %>
<h1>==============方案一拿数据============</h1> <p><h1>学生个人信息</h1></p> <P>学号:<% String id= (String)session.getAttribute("id"); out.write(id);%></P> <P>姓名:<% out.write((String)session.getAttribute("name"));%></P> <P>年龄:<%=((String)session.getAttribute("age"))%></P> <P>性别:<%=((String)session.getAttribute("sex"))%></P> <P>手机号:<%=((String)session.getAttribute("phone"))%></P> <P>家庭地址:<%=((String)session.getAttribute("addr"))%></P>
方案二 .使用类的封装 JavaBean
package com.Student; /** * 类的封装 在jsp中称为 javaBean * @author MZFAITHDREAM * */ public class Student { private String id; private String name; private int age; private String sex; private String phone; private String addr; //无惨构造 public Student() { // TODO Auto-generated constructor stub } //参数构造 public Student(String id, String name, int age, String sex, String phone, String addr) { super(); this.id = id; this.name = name; this.age = age; this.sex = sex; this.phone = phone; this.addr = addr; } //get set 方法 //toStrinng方法 @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", phone=" + phone + ", addr=" + addr + "]"; } }
<% Student student=new Student("007","小明二号",20,"男","18188888888","江西省南昌市"); session.setAttribute("student", student); %>
<% Student student=(Student)session.getAttribute("student"); %> <p>学号:<%=student.getId() %></p> <p>姓名:<%=student.getName() %></p> <p>年龄:<%=student.getAge() %></p> <p>性别:<%=student.getSex() %></p> <p>手机号:<%=student.getPhone()%></p> <p>家庭地址:<%=student.getAddr() %></p>
方案三 利用一个JSP动作将数据存储起来。
<h1>方案三:利用一个JSP动作将数据存储起来</h1> <jsp:useBean id="a" class="com.Student.Student" scope="session"></jsp:useBean> <%-- 使用的id id表示使用的类的对象 class表示完整包的路径--%> <!--等价于:Student student =new Student() session.setAttribute("student", student); stu 对象明 scope 四大域 scope="session" --> <% a.setId("1003"); a.setName("小明三号"); a.setAge(23); a.setSex("男"); a.setAddr("南昌"); a.setPhone("1244444444444"); %>
<h1>==============方案三拿数据============</h1> <h1>方案三:利用一个JSP动作将数据存储起来</h1> <jsp:useBean id="a" class="com.Student.Student" scope="session"></jsp:useBean> <P>学号:<%a.getName();%></P> <P>姓名:<%a.getName();%></P> <P>年龄:<%=a.getAge()%></P> <P>性别:<%=a.getSex()%></P> <P>手机号:<%=a.getPhone()%></P> <P>家庭地址:<%=a.getAddr()%></P>
方案四利用下面三个标签
@1
:创建某一个JavaBean类的对象,需要把该对象存储至指定的四大作用域之一
id:填要创建的类的对象名称
class:填要创建的类的完整包的路径
scope:填四大作用域的标识
page:代表的是pageContext对象
request:代表的是request对象
session:代表的是session对象
application:代表的是application对象
@3
:用于获得动作所创建的对象中所有全局变量的值
name:填对象名称
property:填属性名称或者变量名称
<!-- 用于获得对象中的全局变量的值 name:对象名称 property 变量名称 --> <jsp:useBean id="stu1" class="com.Student.Student" scope="session"></jsp:useBean> <P>学号:<jsp:getProperty property="id" name="stu1"/></P> <P>姓名:<jsp:getProperty property="name" name="stu1"/></P> <P>年龄:<jsp:getProperty property="age" name="stu1"/></P> <P>性别:<jsp:getProperty property="sex" name="stu1"/></P> <P>手机号:<jsp:getProperty property="phone" name="stu1"/></P> <P>家庭地址:<jsp:getProperty property="addr" name="stu1"/></P>
<jsp:useBean id="stu1" class="com.Student.Student" scope="session"></jsp:useBean> <!-- 赋值 --> <%-- property: 属性的名称 name:对象的名称 value:对象赋值的数据 --%> <!--用于给上面动作所创建的对象的全局变量进行赋值 --> <jsp:setProperty property="id" name="stu1" value="1004"/> <jsp:setProperty property="name" name="stu1" value="小红四号"/> <jsp:setProperty property="age" name="stu1" value="23"/> <jsp:setProperty property="sex" name="stu1" value="男"/> <jsp:setProperty property="phone" name="stu1" value="123456678"/> <jsp:setProperty property="addr" name="stu1" value="江西南昌"/>
- @2
- :用于给动作所创建的对象的全局变量进行赋值
- name:填对象名称
- property:填属性名称或者变量名称
- value:填要赋予给全局变量的值
- @1@2@3
- 利用上面三个标签综合运用。
运行结果如图所示。
代码模块
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生注册信息页面</title> </head> <body> <div align="center"> <h2>注册页面</h2> <form action="four.jsp" method="post"> <!--文本框定义的name属性的名称必须要和Student类对应存放数据的全局变量名一致 --> 学号:<input type="text" name="id"><br> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> 性别:<input type="text" name="sex"><br> 手机号:<input type="text" name="phone"><br> 家庭地址:<input type="text" name="addr"><br> <input type="submit" value="注册"><br> </form> </div> </body> </html>
<%@page import="com.Student.Student"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>接收数据</title> </head> <body> <!--接收表单的数据用到 --> <!-- 映射关系 java ------------- jdbc ----------------mysql 类 表 全局变量 字段名 --> <% request.setCharacterEncoding("UTF-8"); String id=request.getParameter("id"); String name=request.getParameter("name"); String sex=request.getParameter("sex"); String age=request.getParameter("age"); String phone=request.getParameter("phone"); String addr=request.getParameter("addr"); //接收的数据封装数据对象中 Student student =new Student(id,name,Integer.parseInt(age),sex,phone,addr); application.setAttribute("stu", student); %> <!--方式二 jsp动作接收数据 --> <jsp:useBean id="s" class="com.Student.Student" scope="application"></jsp:useBean> <jsp:setProperty property="*" name="s"/> <!--重定向跳转five.jsp页面 --> <% response.sendRedirect("five.jsp"); %> </body> </html>
<%@page import="com.Student.Student"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>获得数据</title> </head> <body> <!-- 两种方式获得 --> <h2>用jav对象取出数据</h2> <% Student student =(Student) application.getAttribute("stu");%> <p>学号:<%=student.getId() %></p> <p>姓名:<%=student.getName() %></p> <p>年龄:<%=student.getAge() %></p> <p>性别:<%=student.getSex() %></p> <p>手机号:<%=student.getPhone()%></p> <p>家庭地址:<%=student.getAddr() %></p> <br><br><br> <h3>jsp动作方式</h3> <hr><hr><hr> <jsp:useBean id="s" class="com.Student.Student" scope="application"></jsp:useBean> <jsp:getProperty property="id" name="s"/> <p>学号:<jsp:getProperty property="id" name="s"/></p> <p>姓名:<jsp:getProperty property="name" name="s"/></p> <p>年龄:<jsp:getProperty property="age" name="s"/></p> <p>性别:<jsp:getProperty property="sex" name="s"/></p> <p>手机号:<jsp:getProperty property="phone" name="s"/></p> <p>家庭地址:<jsp:getProperty property="addr" name="s"/></p> </body> </html>
- @4
- :用于类似于请求转发的页面跳转方式
- page:填写要跳转的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- jsp:forward:用于跳转页面 该动作跳转页面方式类似于请求转发,都是服务器内部直接跳转打开页面 page:填写要跳转的页面地址 --> <% //UTF-8编码格式的数据 String info="张三疯"; //从UTF-8格式进行解码 byte[] bs=info.getBytes("UTF-8"); //使用iso-8859-1对字节数组进项编码 String info1=new String(bs,"ISO-8859-1"); %> <jsp:forward page="seven.jsp"> <jsp:param value="<%=info1 %>" name="username"/> </jsp:forward> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 我是第七个页面 <br> <% //iso-8859-1 String info=request.getParameter("username"); out.print(info); //解码 byte[] bs=info.getBytes("ISO-8859-1"); //编码 String info1=new String(bs,"UTF-8"); %> 获得six.jsp页面携带过来的数据为:<%=info1 %> </body> </html>
运行结果
@5
:用于携带参数(如果传输的中文,需要进行编码格式转换)
name:填参数名称
value:填参数的值
@6
:用于动态的将其他多个jsp页面引入或者包含某一个页面中
引入的过程中也可以使用动作给这个子页面传输数据
代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style type="text/css"> *{ font-size: 100px; font-weight: bold; }</style> </head> <body> <div style="width: 900px;height: 800px;background-color: green;margin: auto;" > <!-- 头部 --> <jsp:include page="head.jsp"> <jsp:param value="head" name="jsp"/> </jsp:include> <!-- 中部 --> <jsp:include page="center.jsp"> <jsp:param value="center" name="jsp"/> </jsp:include> <!-- 底部 --> <jsp:include page="foot.jsp"> <jsp:param value="foot" name="jsp"/> </jsp:include> </div> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String info=request.getParameter("jsp"); %> <div style="width: 100%;height: 200px;background-color: red;"><%=info %></div> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String info=request.getParameter("jsp"); %> <div style="width: 100%;height: 200px;background-color: blue;"><%=info %></div> </body> </html>
总结内容介绍
:创建某一个JavaBean类的对象,需要把该对象存储至指定的四大作用域之一
id:填要创建的类的对象名称
class:填要创建的类的完整包的路径
scope:填四大作用域的标识
page:代表的是pageContext对象
request:代表的是request对象
session:代表的是session对象
application:代表的是application对象
:用于给动作所创建的对象的全局变量进行赋值
name:填对象名称
property:填属性名称或者变量名称
value:填要赋予给全局变量的值
:用于获得动作所创建的对象中所有全局变量的值
name:填对象名称
property:填属性名称或者变量名称
:用于类似于请求转发的页面跳转方式
page:填写要跳转的页面
:用于携带参数(如果传输的中文,需要进行编码格式转换)
name:填参数名称
value:填参数的值
:用于动态的将其他多个jsp页面引入或者包含某一个页面中
引入的过程中也可以使用动作给这个子页面传输数据
本文的主题