Dao
data access Object数据访问对象
封装模块的数据,比如说数据库的访问,文件的访问,目录服务器的访问
Dao就是用来封装核心的业务逻辑层
MVC思想
Model:模型 Dao(业务分析操作)
view:视图 (展示数据)jsp html
Control:控制层 (调用逻辑层来操作数据) servlet struts2(action)
1.书写Dao的方法首先书写一个实体类(javabean) 关联数据库当中的字段
如Employer类,让类中成员变量与数据库中的表中数据成员字段一一对应,
2.写一个接口Dao接口
interface
比如要写一个IEmployerDAO,I代表是个接口,存储我的抽象方法。
public interface IEmployerDAO{
public List<Employer> findAll();//业界不推荐public ResultSet findAll()耦合度很高,而采用实体类的集合,通过集合来实现数据的交互
}
实现DAO接口,写一个实现类来实现DAO接口
比如EmployerDAOimpl implements IEmployerDAO{
/*写对应的方法来进行操作*/
}
运用工厂模式来关联Servlet接口与实体类的关系
Factory类,工厂为调用者生产需要的接口
外部文件,
dao.properties
书写规范:接口名=包.实现类
书写相关的方法,找到这个文件
封装多个Servlet
提炼成一个Servlet
三种请求资源路径的方法
Servlet容器如何请求多个资源路径,
上面url-pattern
使用一个Servlet来管理5个不同的Servlet,处理的不同的资源路径
方法1
*.do配置url-pattern
精确匹配方式
<url-pattern>/abc.html</url-pattern>
方法2
使用通配符方法来查找资源路径
"*"来代替url-pattern 0个或者多个
<url-pattern>/*</url-pattern>
方法3
使用后缀匹配,*.开头,后面使用一个或者多个地址字符
<url-pattern>*.do</url-pattern>
如果以上都没有,那么就查找servlet对应的文件,如果找不到,返回404
如何让一个servlet请求多个资源
show code
1.使用后缀的url-pattern匹配模式
2.分析请求路径资源
String url=request.getRequestURI()返回String类型的
http://localhost:8080/web04/list
通过String的API来截取URL
uri.subString(uri.lastindexof("/"),uri.lastindexOf("."));
JSP技术是Sun公司制定一种服务端动态页面的规范,所以维护起来也困难
因为直接使用Sevlet虽然也可以生成动态页面,但是过于繁琐
维护困难
jsp实际是以.jsp后缀
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
以“xxx.jsp”命名的文件,其本质就是一个小型的Servlet
如何写一个jsp页面,写一个以xxx.jsp的文件
添加内容完成jsp编写
1.直接在html(css+javascript)书写
2.java代码
a.java片段<% java代码%>
b.java表达式
<%=java表达式%>
JSP有九大隐含的对象,直接可以使用不需要导包,Session
1.request请求对象
2.response响应对象
3.session对象
4.out对象
5.pageContext页面上下文
6.config配置对象
7.cookie缓存对象 可能会记录网页当中的一些信息
8.config对象
9.exception对象异常信息
jsp指令
告诉容器,操作jsp操作的额外的信息量,比如说导包信息,编码格式,当前页面的语法,语法是什么。
page指令,写在最开始
<%@page指令 属性名称=“属性值”%>
ContentType=“text/html;charset=ISO-8859-1”;当有pageEncoding存在时,这个可以省略
pageEncoding属性告诉容器整个JSP页面的编码格式
因为有部分的容器会默认是ISO-8859-1不能显示中文编码
如果说添加该属性容器就可以正确的解码了
书写JSP文件
转发和重定向
转发:servlet中未完成的动作交给下一个组件叫jsp操作,
1.转发的地址栏不会发生改变的。因为操作的是同一个请求对象。都是使用同一个request
2.转发都是在服务端中进行所有的操作,也就是都是在局限于同一个应用(服务器端的应用)
转发和重定向的相同点和不同点
1.相同点,操作之前转发和重定向,都不能关闭流对象,连接数据库相关对象
并且两者都会清空response对象上的所有缓冲信息。
2.不同点
重定向地址栏上的地址会发生改变,改变的地址就是重定向的地址
转发地址栏不会发生改变,操作的是同一个请求对象
重定向操作是response对象,转发操作request对象
转发request.getRequestDispachter("test.jsp").forward()