1.crud的流程
1 流程: servlet调service进行业务处理
service调dao完成数据库操作
dao在把数据库操作结果在给service
service继续处理在把结果返回给servlet
servlet在根据service的处理结果选择是请求转发还是重定向来显示页面
2.登录功能效验实现
2 流程(登录功能效验实现):
servlet层中UserServlet调UserServiceImpl
UserServiceImpl调UserDaoImpl
UserDaoImpl操作数据库看能不能找到 若有封装成User对象 把User对象 返回给service层
service层返回给servlet 在servlet里看有没有这个人
3.关于数据库版本问题
1.关于数据库的版本问题 会导致访问数据库失败 此时需要在idea中的database中从新配置
同时driver是com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver
相对应的新版本都需要加上时区serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false,
不然都会报错!
参考:
(https://blog.csdn.net/q1406689423/article/details/89845338)
(https://blog.csdn.net/Mr_h0ng/article/details/103827362)
4.servlet重定向路径总结
相当路径:从当前请求的路径查找资源的路径
相对路径如果servlet的别名中包含目录 会造成重定向资源查找失败
绝对路径:第一个/表示服务器根目录
/虚拟项目名/资源路径
5.servlet请求转发
/表示项目根目录 req.getRequestDispatcher("/资源路径").forward(req,resp);
6.Navicat 8.x的mysql语句
参考:https://blog.csdn.net/qq_27495157/article/details/80240156
7.jstl出现的问题
使用jstl时报错 org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
等 因为<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>写成了
<%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%>
8.代码
servlet
package com.bjpowernode.servlet;
import com.bjpowernode.pojo.dept;
import com.bjpowernode.service.DeptService;
import com.bjpowernode.service.impl.DeptServiceImpl;
import org.apache.log4j.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DeptServlet extends javax.servlet.http.HttpServlet {
//声明日志
Logger logger = Logger.getLogger(DeptServlet.class);
//获取service层对象
DeptService ds = new DeptServiceImpl();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置 响应/处理 编码格式
resp.setContentType("text/html;charset=utf-8");
//设置操作符
String oper = req.getParameter("oper");
//调用对应方法
DeptUpdate(req,resp);
if("select".equals(oper)){
//查询
DeptSelect(req,resp);
}else if("insert".equals(oper)){
//添加
DeptInsert(req,resp);
}else if("delete".equals(oper)){
//删除
DeptDelete(req,resp);
//}else if("update".equals(oper)){
//更新
}else{
logger.debug("没有找到对应的操作符");
}
}
//部门更新
private void DeptUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理请求信息
//获取service层对象
List<dept> ld = ds.DeptUpdateService();
if(ld!=null){
//获取数据存储到request
req.setAttribute("ld",ld);
//请求转发
req.getRequestDispatcher("/servlet_dept3.jsp").forward(req,resp);
//return;
}
}
//部门添加
private void DeptInsert(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取请求信息
String deptNo = req.getParameter("deptNo");
String dname = req.getParameter("dname");
String loc = req.getParameter("loc");
dept d = new dept(deptNo,dname,loc);
//处理请求信息
//获取service层对象
int index = ds.DeptInsertService(deptNo,dname,loc);
//处理响应信息
if(index>0){
//获取session对象
HttpSession session= req.getSession();
session.setAttribute("insert"