本文章所有思路与素材都来自于 狂神说Java 如有冒犯 多多见谅,自己总结自己看用。
1.MVC三层架构
什么是MVC: Model view Controller 模型,视图,控制器
控制器:Controller 也就是Servlet 1.接收用户请求 2.响应给客户端内容 3.重定向或者转发
View: 视图层 也就是JSP 1.展示数据 2.提供可以供我们操作的请求
在早年版本:
用户直接访问控制层,控制层就可以直接操作数据库;
servlet --> CRUD --> 数据库
弊端:程序臃肿,不利于维护
servlet代码中:处理请求,响应,视图跳转,处理JDBC,处理业务代码,处理逻辑代码
架构中讲:没有什么是加一层解决不了的!
程序员调用 --> JDBC --> mysql Oracle SqlServer....
MVC三层架构:
Model:
1.业务处理:业务逻辑(Service)
2.数据持久层(数据库中的增删改查): CRUD(Dao)
View:
1.展示数据
2.提供链接发起Servlet请求(a,form,img...)
Controller(Servlet):
1.接收用户请求: (req:请求参数,用户信息....)
2.交给业务层处理对应的代码
3.控制视图跳转
登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数。username.password)--->给业务层处理登录业务(判断用户名密码是否正确:事物)--->Dao层查询用户名和密码是否正确--->数据库
2.Filter过滤器
filter:过滤器,用来过滤网站的数据;
1.处理中文乱码
2.登录验证
Filter开发步骤:
1.导包
2.编写过滤器
2.1 导包不要错
2.2实现Filter接口,重写对应的方法即可
public class CharacterEncodingFilter implements Filter {
//初始化:web服务器启动,就已经初始化了,随时等待过滤对象出现
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter初始化");
}
//Chain:链的意思
/*
* 1.过滤中所有的代码,在过滤特定的请求时都会执行
* 2.必须让过滤器继续通行 filterChain.doFilter(servletRequest,servletResponse);固定死代码
*
* */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("CharacterEncodingFilter执行前。。。");
chain.doFilter(request,response);//让我们的请求继续走,如果不写,程序到此就被拦截停止
System.out.println("CharacterEncodingFilter执行后。。。");
}
//销毁:web服务器关闭的时候,过滤会销毁
public void destroy() {
System.out.println("CharacterEncodingFilter销毁");
}
}
2.3 配置xml中的过滤器 但是一般不用/*偷懒,如果有需要一般多写几个