互相对应的:
1.jsp与servlet一起使用
servlet—EmpServlet —@WebServlet(urlPatterns ={"/emplist"})
获得数据 private EmpService empService = new EmpServiceImpl();
重写 service
①.查询数据库
LIst empList = empService.listEmp();
②把数据库绑定到req对象上
req.setAttribute(s:“empList”,empList);
—加粗empList是自己起的名字 值empList是查询的数据
③转发到jsp上
req.getRequestDispatcher(“/WEB-INF/pages/emplist.jsp”).forward(req,resp);
forward(req,resp)—跳转标签

@WebServlet(urlPatterns = {"/emplist"})
public class EmpListServlet extends HttpServlet {
    private EmpService empService = new EmpServiceImpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.查询数据库
        List<Emp> empList = empService.listEmp();
        //2把数据绑定到req对象上
        req.setAttribute("empList",empList);
        //3.转发到jsp上
        req.getRequestDispatcher("/WEB-INF/pages/emplist.jsp").forward(req,resp);
    }
}

jsp页面

<%List<Emp> empList = (List<Emp> request.getAttribute("empList");%>
**empList---对应setAttribute中的(string)**

2.entity—Emp类 实体类@Data
mapper—EmpMapper 接口 —对应xml中的select的id名
resourse—com/moqi/mapper ----EmpMapper.xml —resultMap sql语句
mybatis.xml ---- resources 中配置
3.service和util包
service----impl子包(EmpService接口)—EmpServiceImpl接口 —获得SqlSession数据

public class EmpServiceImpl implements EmpService {
@Override
public List<Emp> listEmp() {
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
    List<Emp> empList = empMapper.listEmp();
    sqlSession.close();
    return empList;
}
}

—EmpService类 ----等同于EmpMapper
public interface EmpService { //查询所有员工 List<Emp> listEmp(); }

util包----MyBatisUtils类–封装数据----工厂类

public class MyBatisUtils {

public static final boolean DEFAULT_AUTO_COMMIT=true;
private static final SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(
        MyBatisUtils.class.getClassLoader().getResourceAsStream("mybatis.xml"));
public static SqlSession getSqlSession(boolean autoCommit){
    return factory.openSession(autoCommit);
}
public static SqlSession getSqlSession(){
    return factory.openSession(DEFAULT_AUTO_COMMIT);
}
}

总结
1.MyBatisUtils 创建工厂------EmpServiceImpl拿走MyBatisUtils中的SqlSession获得empList—最后return empList
2.entity包中的Emp类—emplist.jsp EmpListServlet.java EmpService 接口 EmpServiceImpl.java
3.service包中的接口interface给了Impl类!----Empservlet类中new EmpServiceImpl得到 empService
然后查询 empService中的列表数据 得到 empList数据列 然后绑定给req.setAttribute给了jsp 最后通过req转发
req.getRequestDispatcher("/WEB-INF/pages/emplist.jsp").forward(req,resp);

1.*jsp用作显示,逻辑还是交给servlet去做-----加粗的名字必须一样
servlet中把数据绑定到req对象上------req.setAttribute(“empList”,empList)
jsp中接受servlet中的数据 -------
<%List empList =(List) request.getAttribute(“empList”);%>
2.resources中的包用 / 建
例如:com/moqi/mapper

req当作map集合使用
object可以放任何类型的数据
getAttribtue获得自己存储的信息
getParameter获得浏览器栏的信息----获得请求参数

问题:
1.mapper中EmpMapper.xml的namespace
—扫的是当前xml的全路径
2.resultmap和resultType区别:单表查询的话用resultType是最合适的。
使用mybatis进行数据库连接操作时对于SQL 语句的返回结果的处理两种方式
result Type:column和property名字完全一样
resultMap:column和propety名字不完全一样的时候
区别:mybatis.xml中
----设置
—日志

指定 MyBatis 所用日志的具体实现,未指定时将自动查找
—类型别名
----扫描放数据库的实体类


----扫描包下对应得那个实体类

—环境配置
—JDBC驱动得java类得完全限定名
—数据库得JDBC url地址
----登录数据库得用户名
-----登录数据库得密码

----映射器
----告诉mybatis到哪里找映射文件xml。将包内得映射器接口实现全部注册为映射器

3.相对地址和绝对地址:
相对路径----从本文件网上找 …/…/———参照物是自己 …/代表上一目录
绝对路径----从根找 / ——参照物是跟
例子:绝对路径

转发和重定向:小结

好的项目和好的技术不是一蹴而就的!!!!
结构
xml配置
pom配置
2.设计数据库
mb4字符集
数字—自动递增
emp_id int 主键

3.webapp—emplist.jsp(员工列表页)
java-----com.moqi.servlet ----EmpListServlet
http:8080/emplist= @WebServlet(urlPatterrns = {"/emplist"}) 代替的是web.xml中的那四行代码

4.欢迎页面----web.xml
welcome-file-list 8080就可以访问 emplist/

mvc模式
model 指的是数据模型
----entity
----dao ,mapper
----service
view ----jsp
controller ----servlet

ui框架----bootstrap

只修改jsp页面----重启update resources

jstl标签库 1.2版本
java stanrd tag language
jstl写法非常符合html标准,由jsp引擎解释成java代码
步骤
①jstl必须导入一个jar包 pom.xml
②在jsp中引入jstl标签
<%–c 代表core核心 --%>
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

jstl替代了jsp中的java代码
jsp中

<%List<Emp> empList = (List<Emp>) request.getAttribute("empList");%>

循环遍历

<% for (Emp emp : empList) {%>
<tr>
    <td><%=emp.getName()%></td>
    <td><%=emp.getAge()%></td>
    <td><%=emp.getSex()%></td>
    <td><%=emp.getSalary()%></td>
    <td><%=emp.getDeptId()%></td>
</tr>
<% } %>

jstl中—头标签

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

循环遍历

<c:forEach items="${empList}" var="emp">
    <tr>
        <td>${emp.name}</td>
        <td>${emp.age}</td>
        <td>${emp.sex}</td>
        <td>${emp.salary}</td>
        <td>${emp.deptId}</td>
    </tr>
</c:forEach>>

javaweb增删改查(二)