1、Web乱码及路径问题
建多级目录
Package中:a.b.c
Directory中:a/b/c
当前页面中所有不加任何修饰的相对路径前,会自动加上href中的内容,将绝对路径问题转换成相对路径问题
<head>
<base href=" ">
</head>
2、MVC模式
MVC(model view controller)
实现序列化接口 implements Serializable
使用lombok插件帮助生成getter、setter、无参构造、全参构造、equals、hascode、tostring
lombok使用步骤:
(1)检查idea是否安装lombok插件
(2)检查是否勾选了enable annotation processer
(3)在实体上添加注解
(4)导入依赖
@AllArgsConstructor 全参构造
@NoArgsConstructor 无参构造
@Data(getter、setter、equals、hascode、tostring)
3、DAO层
DAO(data access object),DAO层一般需要定义接口和实现类,方便调用
4、会话管理
创建cookie
Cookie cookie=new Cookie("keya","valuea")
resp.addcookie(cookie)将cookie放入response对象
Cookie具有时间限制
Cookie[] cookies=req.getCookies() 如果没有返回null
Cookie具有时效性
会话级 会话关闭cookie清除
持久化 设定cookie存在时长 cookie.setMaxAge(数值)
Cookie.setPath("/demo/servletA")当调用servletA时才发送cookie
获得session对象
HttpSession session=req.getSession()
判断请求中有没有一个特殊的cookie:JSESSION
(1)有
根据JSESSION找到session对象
找到:返回之前的session
没找到:创建一个新的session返回,并且向response对象中存放一个JSESSION的cookie
(2)无
创建一个新的session返回,并且向response对象中存放一个JSESSION的cookie
session.getId()
session.isNew()
session.setAttribute("username",username)
session.setMaxInactiveInterval(秒数) 设置session的存活时长
5、域对象
void setAttribute(String name,String value) 添加/修改
Object getAttribute(String name) 获取
removeAttribute(String name) 移除
请求域:
req.setAttribute("A","a")
会话域:
req.getSession()
session.setAttribute("B","b")
应用域:
req.getServletContext()或ServletContext application=getServletContext()
application.setAttribute("C","c")
6、过滤器
日志过滤器:
(1)实现Filter接口
(2)重写过滤方法 doFilter 过滤请求和响应的方法
(1)请求到达目标资源之前,先经过该方法
(2)该方法有能力控制请求是否继续向后也可以直接对客户端进行响应
(3)请求到达资源后、响应前还会经过该方法
放行代码***:
filterChain.doFilter(request,response)
(3)配置过滤器 web.xml或注解
配置过滤器:
<filter>
<filter-name>别名</filter-name>
<filter-calss>反射类</filter-calss>
</filter>
<filter-mapping>
<filter-name>别名</filter-name>
<url-pattern> </url-pattern> //根据请求路径过滤,/*或/a/*或*.html
<servlet-name>别名</servlet-name> //根据servlet别名进行过滤
</filter-mapping>
//一个filter-mapping中可以同时有多个url-pattern和servlet-name
过滤器链 filterChain:
决定过滤器先后执行顺序,由xml配置文件中<filter-mapping>的先后顺序决定的,
若是注解方式@webFilter的话是由类的名称决定先后执行顺序。
7、监听器(域对象)
xml配置:
<listener>
<listerner-calss>xxxxxxxxxxx</listerner-calss>
</listener>
注解@webListener
8、Ajax
优点:在不重新加载整个页面的情况下,可以与服务器交换暑假并更新部分网页页面。
实现方式:
(1)原生Js的实现,涉及到回调函数的问题
(2)第三方封装好的工具jquery (不建议使用)
(3)使用框架 VUE axios