原生Web
main
pojo 实体类 User
dao 实体数据库操作类
数据库公共类 BaseDao
数据库配置、连接、获得sql执行器statement执行sql的通用方法
实体数据库操作接口层 UserDao
实体数据库操作接口实现类 UserDaoImpl
sql执行,CRUD
service 业务层
实体业务接口 UserService
实体业务接口实现类 UserServiceImpl
调用dao层接口 功能的具体实现,资源关闭
一个路径一个servlet
实现HtttpServlet接口
doGET/doPost
HttpServletRequest 请求
获得前端传递的数据
String getParameter()
String[] getParameterValue()
请求转发
req.sendRedirect("/r/imageServlet");
HttpServeltResponse 响应
应用1.向浏览器输出消息
getOutPutStream() //写文件
getWrite() //写汉字
应用2.下载文件
应用3.验证码功能
应用4.实现重定向
resp.sendRedirect("/r/imageServlet");
ServeltContext
ServletContext 上下文 (中间件) 可以保存一些东西,web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的Web应用
共享数据
servletContext.setAttribute("username",username);//将一个数据保存在ServletContext中,名字为username
String username = (String)servletContext.getAttribute("username");
请求转发 RequestDispatch
servletContext.getRequestDispatcher("/gp").forword(request,response);//转发的请求路径
读取资源文件
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop = new Properties();
prop.load(is);
session 服务器技术/cookie客户端技术 保存会话
session
HttpSession session = req.getSession(); //得到session
String name = (String)session.getAttribute("name");//给session中存东西
resp.getWriter().write(name);
session.removeAttribute("name");//手动注销Session
session.invalidate();
cookie
Cookie cookie = new Cookie(“lastLogin”, System.currentTimeMillis()+"");//新建一个Cookie
cookie.setMaxAge(246060); //设置cookie有效期
resp.addCookie(cookie);//响应一个cookie给客户端
`Cookie[] cookies = req.getCookies() //获得cookie
cookie.getName();//获得cookie中的key
cookie.getValue(); //获得cookie中的value
Filter 过滤器
过滤网站数据:处理中文乱码,用户身份验证,权限管理
实现Filter接口
public void init(FilterConfig filterConfig) 初始化
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 过滤特定的请求
Chain链
// 1.过滤中的所有代码,在过滤特定请求的时候都会执行
//2.必须要让过滤器继续通行
chain.doFilter(request,response);//让我们的请求继续走,若不写 程序就会被拦截停止
public void destroy() 销毁 Web服务器关闭才被销毁
Listener 监听器
每个事件都有监听
resources静态资源
db.properties 数据库配置文件
会出现的问题:读取配置文件失败,资源过滤问题
webapp
web.xml 核心配置文件
注册配置 servlet、filter、欢迎页、session设置监听器
子主题 1
filter
com.zxw.filter.CharacterEncodingFilter
filter
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
数据库JDBC
1.加载数据库驱动 driver
Class.forName();
2.数据库用户信息和URL
jdbc:mysql://8.140.108.61:3306/ipark?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
3.连接数据库,获得数据库对象
Connection connection = DriverManage.getConnection(URL,username,password);
4.获得执行sql的对象
Statement statement = connection.createStatement;存在SQL注入
PreparedStatement 预编译sql执行器
5.编写sql,执行sql
execute()/executeQuery(sql);
6.释放连接
result.close();/statement.close();/connection.close();
数据库连接池 解决系统资源浪费问题
数据源实现 不需要自己编写连接数据库的代码