标签:技术 标签库 动态 oca 理解 glib 简写 记录 一个
查看 _jsp.java 源码路径: F:\apache-tomcat-9.0.14\work\Catalina\localhost\ROOT\org\apache\jsp
3.JSP中的Java脚本片段
2,3 方式都在_japService() 里面。
<% 语句1; 语句2; %>
4.定义类的成员 ,
<%! String str; void testMethod(){} %>
JSP中写Java代码相当恶心 和 Servlet中写html代码有一拼。
1)include指令
作用: 在当前页面用于包含其他页面
语法: <%@include file=”common/header.jsp”%>
注意:
1)原理是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp)中,合并成翻译成一个java源文件,再编译运行,这种包含叫静态包含(源码包含)
2)抽出去的jsp中只需要<%@page ... %> 和内容即可。
(2)page指令
作用: 告诉tomcat服务器如何翻译jsp文件
语法: <%@ page
language=”java” 该属性用于设置JSP页面使用的语言,目前只支持Java语言
import=”java.util.*” 导包,多个包之间用逗号分割 。
pageEncoding=”utf-8” 定义JSP页面的编码格式,可解决中文乱码问题
contentType=”text/html; charset=utf-8” 服务器发送浏览器的数据类型和内容编码
errorPage=”error.jsp” 当前页面发生错误跳转到错误页面。
isErrorPage=”false” 该属性可以将当前页面定义为错误页面来处理另一个页面转发而来的错误,即异常处理。设置为true以后可以使用exception对象.
buffer=”8kb” 用于设置out对象所使用的缓冲区大小,默认大小是8KB,单位只能是8的倍数。
session=”true” 定义JSP页面是否使用session会话对象,其值是boolean类型,默认值为true.
isELIgnored=”false” 该属性用于定义些页面是否忽略EL表达式的使用
%>
(3)taglib指令
作用:导入标签库
语法:<%@taglib uri=”tld文件的uri名称” prefix=”简写” %>
动作指令与编译指令不间,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的脚本动作。编译指令在将JSP 编译成 Servlet 时起作用:处理指令通常可替换成 Java脚本,是 JSP脚本的标准化写法。
JSP7 个 动作指令如下 :
jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
jsp:include: 用于动态引入一个 JSP 页面。
jsp:p1ugin: 用于下载 JavaBean 或 Applet 到客户端执行。
jsp:useBean: 使用 JavaBean。
jsp:setProperty: 修改 JavaBean 实例的属性值。
jsp:getProperty: 获取 JavaBean 实例的属性值。
什么是javaBean?
1. 简单理解JavaBean:遵循一定的规范用JAVA语言写成的可重用组件(类).
1):类必须使用public修饰.
2):必须保证有公共无参数构造器. (一般就是可以通过反射轻松的创建对象)
3):包含了属性的操作(给属性赋值,获取属性值).
注意:javaBean的属性(字段+set/get方法)
2. 广义的JavaBean:
1):复杂:GUI,比如Button,Panel,Window类.
2):简单:domain,dao,service组件,封装数据,操作数据库,逻辑运算等.
3. JavaBean中的成员:
1):方法:Method
2):事件:event
3):属性:property
4. JavaBean的自省(内省)机制
自省和反射很相似。大家都是通过字节码来映射出自身的元素!
反射映射出整个类,属性自省就映射出属性的全部,就是名字,getter 和setter 方法。
public class TestJavaBean { @Test public void test1() throws Exception{ //static BeanInfo getBeanInfo(Class<?> beanClass); //获取指定字节码对象的javaBean信息对象 BeanInfo info= Introspector.getBeanInfo(Student.class,Object.class); PropertyDescriptor[] propertys= info.getPropertyDescriptors();//获取所有属性的描述器 for (PropertyDescriptor pd : propertys) { System.out.println(pd);//打印每一个属性描述器。 System.out.println(pd.getName());//属性对象的名称 System.out.println(pd.getPropertyType());//属性对象的类型 System.out.println(pd.getReadMethod());//属性对象的读方法 getXxx() System.out.println(pd.getWriteMethod());//属性对象的写方法 setXxx() System.out.println("-----------------------"); } } }
5. BeanUtils工具的使用
开发(框架)中,经常使用Apache common的BeanUtils工具来操作JavaBean.
需要的JAR包
commons‐beanutils‐1.9.3.jar // 工具核心包 ? commons‐logging‐1.2.jar // 日志记录包 ? commons‐collections‐3.2.2.jar // 增强的集合包
1. public static void setProperty(Object bean, String name, Object value)
//参数一: 对象, 参数二:属性名, 参数三: 属性的值。
给指定对象bean的指定name属性赋值为指定值value。 //如果指定的属性不存在,则什么也不发生。 ? 2.public static String getProperty(Object bean, String name) 获取指定对象bean指定name属性的值。 //如果指定的属性不存在,则会抛出异常。 注意:当属性的类型是数组类型时,获取到的值数组中的第一个值。 ? 3.public static void copyProperties(Object dest, Object orig) 将对象orig的属性值赋值给对象dest对象对应的属性 注意:只有属性名名相同且类型一致的才会赋值成功。 ? 4. public static void populate(Object bean, Map<String, ? extends Object> properties) 将一个Map集合中的数据封装到指定对象bean中 注意:对象bean的属性名和Map集合中键要相同。
class User { ? private int id; private int age; private String name; private double sal; 。。。。。 。。。。。。。。。 将一个Map集合的数据封装到一个JavaBean对象中 //模拟的注册 public class BeanUtilsDemo { public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); //创建Map集合 Map<String,String> map = new HashMap<String, String>(); System.out.println("请输入您的身份证:"); String id = scanner.next(); map.put("id", id); System.out.println("请输入您的姓名:"); String name = scanner.next(); map.put("name", name); System.out.println("请输入您的年龄:"); String age = scanner.next(); map.put("age", age); //给对象封装数据 , 数据全部都在Map中。 User s = new User(); //把map中的数据封装到对象上。 BeanUtils.populate(s, map); System.out.println("用户信息是:"+ s); } }
(★★★)将 获取注册页面中的数据封装成业务对象
其他页面获取对象:User user = MyBeanUtils.getInstance().req2Obj(request, User.class);
public class MyBeanUtils { private MyBeanUtils() {} private static MyBeanUtils instance = new MyBeanUtils(); public static MyBeanUtils getInstance() { return instance; } //获取到注册页面中的数据封装成业务对象 public <T>T req2Obj(HttpServletRequest request, Class<T> clazz ){ Map<String, String[]> params = request.getParameterMap(); T uT = null; try { uT = clazz.newInstance(); BeanUtils.copyProperties(uT, params); } catch (Exception e) { e.printStackTrace(); } return uT; } }
标签:技术 标签库 动态 oca 理解 glib 简写 记录 一个
原文地址:https://www.cnblogs.com/gshao/p/10354292.html