来存放 class 对象。
比如: Student s new Student s.study 执行过程: jvm 先查找方法区看 student class 对象是否 存在,如果不存在,则调用 ClassLoader类加载 器查找 Student.class 文件,找到后,将其转 换成 student class 对象放在方法区,这个过程称为 类的加载。
接下来,再创建 Student 对象,并存放到 堆里面,然后给栈中的变量 s 赋值Student 对象 在堆中的首地址。
可以通过 s 找到 Student 对象, 在执行 study方法时,还要通过 Student 对象找到 方法区中的 student class 对象在该对象中保存有 study 方法的代码。
练习: 将 AddEmpServlet 类中的 jdbc 代码使用 dao 的方式进行封装。
提示: step1 给 EmployeeDAO 接口添加 public void saveEmployee e throws Exception 方法。
step2 实现这个方法 step3 测试这个方法 step4 在 AddEmpServlet 类中使用 dao 替换原有的 jdbc 代码。
2、servlet 的生命周期及相关的接口与类 1servlet 的生命周期 a 含义: servlet 容器创建 servlet 对象、然后初始化、 并且调用相应的方法处理请求、最后销毁 servlet 对象的整个过程。
b过程: 阶段一:实例化 容器创建 servlet 对象。
情况一: 容器依据请求资源路径查找对应的 servlet 对象,如果找不到该对象,则 创建,否则,不会创建。
情况二: 容器启动的时候,或者部署某个应用时, 容器会检查 servlet 有没有 load-on-startup 配置,如果有,则先创建该 servlet 对象。
load-on-startup 参数值越小,优先级越高 即容器会先创建这个 servlet 对象。
阶段二:初始化 容器在创建好 servlet 对象之后,会调用 servlet 对象的 initServletConfig config方法。
如果要实现自己的初始化逻辑,最好 override init方法。
init 方法只会执行一次。
阶段三:就绪 容器调用 servlet 对象的 service 方法来处理 请求。
阶段四:销毁 容器如果需要销毁某个 servlet 对象,会先 调用 destroy 方法。
可以在该方法里编写释放 资源的代码。
destroy 方法只会执行一次。
2相关的接口与类 aServlet 接口 initServletConfig config:初始化方法。
serviceServletRequest reqServletResponse res destroy bGenericServlet 抽象类 实现了 Servlet 接口中的大部分方法包括 initdestroy 方法。
cHttpServlet 抽象类 继承了 GenericServlet,实现了 service 方法。
该 service 方法会依据请求方式分别调用 doGet 或者 doPost 方法。
如果要开发一个 servlet,可以选择 override service 方法推荐或者 override doGetdoPost 方法。
dServletConfig 接口 容器在调用 init 方法之前,会先创建好一个 符合该接口的对象。
可以使用该对象来访问 servlet 的初始化参数。
String getInitParameterString name 练习: 将 DelEmpServletLoadEmpServletModifyEmpServlet 中的 jdbc 代码使用 dao 来封装。
1、
jsp1什么是
jsp sun 公司制订的一种服务器端动态页面生成技术规范。
因为直接使用 servlet 生成动态页面过于繁琐 需要使用 out.println 输出并且不方便维护 比如,要修改页面,就必须修改 java 源代码, 所以,sun 公司制订了这样一种动态页面生成技术。
在
jsp 文件里面,只需要在 html 内容里面添加少量 的 java 代码,就可以实现动态页面,相对于 servlet 更方便。
2如何写一个
jsp 文件 step1 写一个以.
jsp 为后缀的文件 step2 在该文件里面,添加如下的内容: a htmlcssjavascript: 直接写。
b java 代码 第一种形式: java 代码片断 lt java 代码 gt 第二种形式:
jsp 表达式 ltjava 表达式gt c 指令 什么是指令? 通知容器,在将.
jsp 文件转换成.java 文件时, 做一些额外的处理。
指令一般会影响到.java 文件的生成。
指令的语法 lt指令名称 属性名称属性值gt page 指令: import 属性: 导入包 比如: ltpage importquotjava.util.quotgt ltpage importquotjava.util.java.sql.quotgt contentType 属性:设置 response.setContentType 的内容。
比如: ltpage contentTypequottext/htmlcharsetutf-8quotgt pageEncoding 属性:告诉容器,.
jsp 文件的 编码是什么容器在读取.
jsp 文件的内容时, 需要解码,所以,最好明确告诉容器.
jsp 文件 的编码,否则,有些容器会默认为.
jsp 文件的 编码是 iso-8859-1。
d隐含对象 隐含对象是什么 在.
jsp 文件当中,不用声明和创建,就可以 直接使用的对象因为容器会生成声明和创建 这些对象的代码。
有哪一些隐含对象 out request response 另外还有 6 个,以后会讲到3
jsp 执行过程 step1 容器要将.
jsp 文件先转换成一个.java 文件 就是一个 servlet。
a htmlcssjavascript --gt service 方法里, 使用 out.write输出。
out.write 方法会将 quotnullquot转换成quotquot输出。
b java 代码片断 lt gt --gt service 方法里, 照搬。
c
jsp 表达式 lt gt --gt service 方法里, 使用 out.print 输出。
step2 容器调用这个 servlet 的 service 方法来处理 请求。
.html --- gt .
jsp step1 将 cssimg 等文件夹 copy 到 webroot 下。
step2 创建一个 employee_list2.
jsp练习: 使用美工提供的静态页面完成 employee_list2.
jsp。
要求支持中文。
2、转发 1什么是转发 一个 web 组件servlet/
jsp将未完成的处理 任务通过容器转交给另外一个 web 组件继续完成。
2编程 step1 绑订数据到 request 对象 //将 value 绑订到 request 对象上 request.setAttributeString name Object value //依据绑订名称name找到绑订值 //如果绑订名称对应的值不存在,返回 null。
Object request.getAttributeString name //解除绑订 request.removeAttributeString name step2 获得转发器 //url:转发的目的地 RequestDispatcher rd request.getRequestDispatcherString url step3 转发 rd.forwardrequestresponse 在目的组件上,可以使用 Object request.getAttributeString name 获得之前绑订的数据,然后继续处理。
3需要注意的问题 容器在转发之前,会将 response 中缓存的数据 清空。
4特点 a转发只能在同一个应用内部的各个组件之 间进行。
b转发之后,浏览器地址栏的地址不变。
1、让容器来处理系统异常 当把系统异常扔给容器之后: step1编写一个错误处理页面 比如 error.
jsp step2在 web.xml 文件中 lterror-pagegt lterror-codegt500lt/error-codegt ltlocationgt/error.jsplt/locationgt lt/error-pagegt 这样,容器会将 error.
jsp 的内容输出。
2、servlet 容器如何处理请求资源路径 比如,在浏览器地址栏输入 http://ip:port/appname/abc.html 则quot/appname/abc.htmlquot称为请求资源路径。
当容器收到请求资源路径之后,会做如下处理: step1依据 appname 找到应用所在的文件夹。
step2容器比较 web.xml 当中lturl-patterngt 的配置与quot/abc.htmlquot。
比较过程: a精确匹配:要求lturl-patterngt的内容与 应用名之后的内容一致。
b通配符匹配: 即使用quotquot来代表任意的一个 或者多个字符。
比如: lturl-patterngt/lt/url-patterngt c后缀匹配:以quot.quot开头,后接任意的一个 或者多个字符。
比如: lturl-patterngt.dolt/url-patterngt 匹配所有以.do 结尾的请求。
step3 如果都不匹配,容器会认为这是一个 静态资源文件,然后查找有没有这样一个文件, 如果有,则返回,如果没有,返回 404。
3、一个 servlet 处理多个请求 step1对该 servlet 使用后缀匹配模式。
step2在 servlet 类里面,分析请求资源路径, 依据请求,执行不同的分支来处理。
练习: 将员工管理系统的多个 servlet 合并成一个,并采用 容器来处理系统异常。
4、相对路径与绝对路径 1什么是相对路径 不以quot/quot开头的路径 2什么是绝对路径 以quot/quot开头的路径 3掌握以下四种情况下的绝对路径该如何写? 链接地址:lta hrefquotquotgtlt/agt 表单提交:ltform actionquotquotgt 重定向:response.sendRedirectquotquot 转发:request.getRequestDispatcherquotquot .
上一篇:
ssh面试宝典(必过)
下一篇:
扛起年轻化大旗,哈弗F系玩转行业新风潮