如何开发一个动态web资源
1.class文件不应该被浏览器直接访问到
- 即便直接访问到,那么也是下载该class文件,而不是执行
- 如果下载了class文件,那么服务器的源代码就暴露在了客户端面前
服务器为了保护源代码的安全,设置了一个目录专门用来存放源代码文件,即WEB-INF目录。任何文件只要在WEB-INF目录下,那么浏览器绝对无法直接访问到它。
- 曲线救国,运行servlet(映射机制)
服务器给你提供了一个映射机制,比如 /servlet1对应你编写的servlet,那么今后只要你输入/servlet1那么就知道了应该去调用当前编写的servlet。
还有一个说明:
就是源代码文件,按照EE规范,必须要放置在WEB-INF/classes目录下,如果有运行时依赖的jar包,那么该jar包需要放置在WEB-INF/lib目录下(如果没有,那么就不写该目录),以及一个配置潜规则的文件,该文件名也必须要求时web.xml。
目录结构;
最终访问的时候,一定要看是在哪个应用下面的
比如我们设置的应用叫做/application,servlet的映射叫做/servlet1,那么访问的时候
http://locservlet究竟是怎么执行的呢?
反射。可以利用反射在程序运行的时候动态的生成一个对象。
Class.forName(com.cskaoyan.servlet.FirstServlet).newinstance();
/servlet1----------------------FirstServlet
FirstServlet servlet = Class.forName(FirstServlet).newInstance();
**servlet.service(request,response)**alhost/application/servlet1.
Student.java
public class Student {
public void say(){
System.out.println("hello");
}
}
Reflection.java
public class Reflection {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Student o = (Student)Class.forName("com.cskaoyan.servlet.Student").newInstance();
o.say();
}
}
输出结果;