一入门知识
1. 一用户与一线程关联 所以servlet是多线程的,即线程安全的。此点优于CGI。
2.Model1和Model2的主要区别是 Model2 结构引入了servlet做为控制器。
Model1请求直接发到jsp页面 Model2请求先发送到servlet 然后由 servlet决定转到某个jsp也面上。因此可以在Model2的servlet中执行前端处理过程。例如:身份验证,授权,集中登陆,并辅助进行国际化设置。
简单的servlet转发可以根据页面请求参数,当前应用状态硬编码到servlet中复杂的可以使用工作流/规则引擎
Model2是符合MVC模式的一种开发模型。
3.JNDI在狂架中的应用(Java名字目录接口)
4.作用域
1)请求作用域 request
2)会话作用域 session
3)应用程序作用域 servletcontext
4)页面作用域 pagecontext
5.重定向与转发
重定向response.sendredirect()调用时web容器先向浏览器返回响应,指示需要新URL 进而浏览器发出完全崭新的请求 所以重定向之前存储为请求属性的任何对象都会消失。
RequestDispatcher dispatcher = req.getRequestDispatcher(redirectStr);
dispatcher.forward(req,resp);
转发调用时请求直接给服务器上的另一个资源而无需通知客户机转发过程中对象可以存储在请求中。并发给下个资源使用。
由于转发并不通知客户机所以明显表现是重定向的浏览器地址栏地址变化了,而转发由于未通知客户机所以URL地址未变。
相比,转发性能更高,因为它少了向客户端通知这一环节。推荐使用转发机制,因为转发时请求作用域对象能够保持住,而请求作用域对象更易于显示组件使用。
struts默认用转发机制而且转发效率高于重定向。因为客户机不许要发送新请求。
必须使用重定向机制的:
jsp页面上使用图形的相对路径和其他资源转发后相对路径只是相对初始的servlet 而不是所转发到的jsp页面 struts提供了jsp自定义标记帮助解决这个问题。
struts大约300个类 分为8个核心包。