标签:sata 构造器 https 不能 eth 最好 响应 方式 name
系统学习Java Web也有一周时间了,整理一下这一周中接触到的新概念以及根据这一周的所学知识完成的一个基于JSP+Servlet+Java Bean+MySql的留言板Demo
tomcat是一个"Web App Server",底层是Socket的一个程序,是JSP/Servlet的一个容器,简单来说,当我们在我们电脑本地编写HTML,css时,我们写的页面只能自己访问,别人不能远程访问我们写的页面,而tomcat就是一个能让别人访问自己写的页面的一个程序
Servlet通常被称为服务器端小程序,运行在服务器端,用于处理和响应客户端的请求,它是一个遵循Servlet开发的Java类,Servlet的生命周期可分为5个步骤:
JSP全名Java Server Pages,是一种基于文本的程序,其特点是HTML和Java代码同时存在,jsp的本质就是Servlet,当jsp被部署到Web容器之后,Web容器会自动将JSP编译成对应的Servlet。由于直接使用Servlet输出页面非常麻烦,JSP就是代替Servlet输出HTML页面的。
MVC规范出现以后,Servlet不再需要输出页面标签或是扮演其他视图层角色,仅仅作为控制器使用
JavaBean是一种特殊的Java类,这个类必须提供一个无参数构造器,成员属性最好定义为私有,并提供一系列setter,getter方法访问及操作这些属性。
反射是Java语言本身具有的一个重要动态机制,用一句话来解释反射的定义:自控性,自描述。即通过反射可以动态获取类,属性,方法的信息,也能构造对象并对象的属性和行为。
举个例子:
Apple 类
public class Apple {
private String name;
public Apple() {
}
public Apple(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
自描述(通过反射获取类,属性,方法的信息)
import java.lang.reflect.*;
public class Main {
public static void main(String[] args) {
Class clazz = Apple.class;
// 获取构造器信息
for (Constructor constructor : clazz.getConstructors()) {
System.out.println(constructor.getName() + " " + constructor.getParameterCount());
}
// 获取属性信息
for (Field field : clazz.getDeclaredFields()) {
System.out.println(field);
}
// 获取方法信息
for (Method method: clazz.getDeclaredMethods()) {
System.out.println(method);
}
}
}
输出
Apple 0
Apple 1
private java.lang.String Apple.name
public java.lang.String Apple.getName()
public void Apple.setName(java.lang.String)
自控制(构造对象并控制对象属性及行为)
import java.lang.reflect.*;
public class Main {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("Apple");
final Constructor constructor = clazz.getConstructor(String.class);
final Object appleInstance = constructor.newInstance("China Apple");
System.out.println("Is appleInstance type equals Apple: " + (appleInstance instanceof Apple));
Apple chinaApple = (Apple)appleInstance;
System.out.println("Apple name: " + chinaApple.getName());
final Method setNameMethod = clazz.getMethod("setName", String.class);
setNameMethod.invoke(appleInstance, "Japan Apple");
System.out.println("Apple name: " + chinaApple.getName());
final Field nameField = clazz.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(appleInstance, "USA Apple");
System.out.println("Apple name: " + chinaApple.getName());
}
}
输出
Is appleInstance type equals Apple: true
Apple name: China Apple
Apple name: Japan Apple
Apple name: USA Apple
非反射的Java类的大致运行流程是:编写源文件Apple.java,编译器将其编译为字节码文件Apple.class,最后加载到jvm中运行,而在反射的方式中,编译器一开始对其类型一无所知,只有在运行过后,编译器才知道其真正类型。
反射优势主要有两点
注解与标签的概念十分相似,注解中信息的解析常常用”反射“来实现
采用JSP+Servlet+JavaBean实现,JSP实现视图层,Servlet实现控制层,连接MySQL数据库实现数据存储
https://github.com/bodhisatan/MessageBoard/
标签:sata 构造器 https 不能 eth 最好 响应 方式 name
原文地址:https://www.cnblogs.com/yaoomoon/p/10994999.html