javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第1张图片

JSP快速入门

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第2张图片

JSP原理

 jsp本质上是一个Servlet,JSP = HTML + Java,用于简化开发

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第3张图片
JSP脚本

 javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第4张图片

    <%
        System.out.println("hello,jsp~");
        int i = 3;
    %>


    <%="hello"%>
    <%=i%>

    <%!
        void  show(){}
        String name = "zhangsan";
    %>

 练习:使用JSP脚本展示品牌数据

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第5张图片

//<%   %> 内写java代码    ;<%   %>  外写Html 与 Css  ;<%   %> 俗称 截断

    <%
        for (int i = 0; i < brands.size(); i++) {
            Brand brand = brands.get(i);
    %>

    
        <%=brand.getId()%>
        <%=brand.getBrandName()%>
        <%=brand.getCompanyName()%>
        <%=brand.getOrdered()%>
        <%=brand.getDescription()%>

        <%
            if(brand.getStatus() == 1){
                //显示启用
        %>
            <%="启用"%>
        <%
            }else {
                // 显示禁用
        %>
            <%="禁用"%>
        <%
            }
        %>

        修改 删除
    

    <%
        }
    %>

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第6张图片


EL表达式

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第7张图片

        //1. 准备数据
        List brands = new ArrayList();
        brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
        brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
        brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));


        //2. 存储到request域中
        request.setAttribute("brands",brands);
        request.setAttribute("status",1);

        //3. 转发到 el-demo.jsp
        //request.getRequestDispatcher("/el-demo.jsp").forward(request,response);
        //request.getRequestDispatcher("/jstl-if.jsp").forward(request,response);
        request.getRequestDispatcher("/jstl-foreach.jsp").forward(request,response);
    ${brands}


JSTL标签

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第8张图片

 javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第9张图片

 javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第10张图片

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    Title



    <%--
        c:if:来完成逻辑判断,替换java  if else
    --%>
<%--

    即如果是 true 则 if 成立
    
        

true

false

--%> 启用 禁用

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第11张图片

 javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第12张图片

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




    
    Title




<%----%>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
${brand.id}${status.count} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除

${i}

MVC模式(编程思想)

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第13张图片

 三层架构(编程思想)SSM 

SpringMVC(表现层) + Spring(业务逻辑层) + MyBatis(数据访问层)

表现层(包名:com.itheima.web/controller)-接收请求,封装数据-调用业务逻辑层封装的方法来响应前端请求的数据

业务逻辑层(包名:com.itheima.service)-对方法进行封装-组合数据访问层中基本的增删改查,实现复杂的业务逻辑功能

数据访问层(包名:com.itheima.dao/mapper)-(持久层)-对数据库增删改查(jdbc和mybatis)

补充:放实体类的pojo.java  (品牌实体类)

           放工具类的util.java

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第14张图片

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第15张图片

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第16张图片

案例(完成品牌数据的增删改查操作)

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第17张图片

jsp(调用html与css等实现前端界面)——web(对用户输入的数据进行验证和对其他jsp的跳转)——service(将mapper实现的sql方法调用,获取sqlsession连接池,获取usermapper文件中的方法,调用方法,释放资源)——mapper(对数据库简单的增删改查定义一些实现方法)——util(工具类,生成动态验证码,定义静态代码块连接池)——pojo(实体类,用户信息实体类,品牌实体类)

 javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第18张图片

//index.html




    
    Title




    查询所有


//SelectAllServlet.java

package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet("/selectAllServlet")
public class SelectAllServlet extends HttpServlet {
    private  BrandService service = new BrandService();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        //1. 调用BrandService完成查询(将数据获取到数组中)
        List brands = service.selectAll();

        //2. 存入request域中(转存到域中方便上传至网页)
        request.setAttribute("brands",brands);

        //3. 转发到brand.jsp(数据上传网页)
        request.getRequestDispatcher("/brand.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
//brandservice.java


    /**
     * 查询所有
     * @return
     */
    public List selectAll(){
        //调用BrandMapper.selectAll()

        //2. 获取SqlSession(引入连接池)
        SqlSession sqlSession = factory.openSession();
        //3. 获取BrandMapper(引入BrandMapper类)
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //4. 调用BrandMapper中定义的方法
        List brands = mapper.selectAll();

        sqlSession.close();

        return brands;
    }
//brandmapper.java


    /**
     * 查询所有
     * 书写sql语句,定义相关的方法
     * @return
     */
    @Select("select * from tb_brand")
    @ResultMap("brandResultMap")
    List selectAll();

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第19张图片

1 中文乱码问题

2 提交事务

//brand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




    
    Title




<%----%>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
${brand.id}${status.count} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除
//addBrand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>




    
    添加品牌


添加品牌

品牌名称:
企业名称:
排序:
描述信息:
状态: 禁用 启用
//AddServlet.java


package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
    private BrandService service = new BrandService();


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //处理POST请求的乱码问题
        request.setCharacterEncoding("utf-8");

        //1. 接收表单提交的数据,封装为一个Brand对象
        String brandName = request.getParameter("brandName");
        String companyName = request.getParameter("companyName");
        String ordered = request.getParameter("ordered");
        String description = request.getParameter("description");
        String status = request.getParameter("status");

        //封装为一个Brand对象
        Brand brand = new Brand();
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));


        //2. 调用service 完成添加
        service.add(brand);


        //3. 转发到查询所有Servlet
        request.getRequestDispatcher("/selectAllServlet").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
//BrandService.java


    /**
     * 添加
     * @param brand
     */
    public void add(Brand brand){

        //2. 获取SqlSession(引入连接池)
        SqlSession sqlSession = factory.openSession();
        //3. 获取BrandMapper(引入BrandMapper类)
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //4. 调用方法
        mapper.add(brand);

        //提交事务(mysql更新数据需要提交事务)
        sqlSession.commit();
        //释放资源
        sqlSession.close();

    }
//BrandMapper.java

    /**
     * 添加数据
     * @param brand
     */
    @Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})")
    void add(Brand brand);

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第20张图片

//brand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




    
    Title




<%----%>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
${brand.id}${status.count} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除
//Updata.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>





    
    修改品牌


修改品牌

<%--隐藏域,提交id--%> 品牌名称:
企业名称:
排序:
描述信息:
状态: 禁用 启用
禁用 启用
//SelectByIdServlet


package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/selectByIdServlet")
public class SelectByIdServlet extends HttpServlet {
    private  BrandService service = new BrandService();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 接收id
        String id = request.getParameter("id");
        //2. 调用service查询
        Brand brand = service.selectById(Integer.parseInt(id));
        //3. 存储到request中
        request.setAttribute("brand",brand);

        //4. 转发到update.jsp
        request.getRequestDispatcher("/update.jsp").forward(request,response);


    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
//BrandService


    /**
     * 根据id查询
     * @return
     */
    public Brand selectById(int id){
        //调用BrandMapper.selectAll()

        //2. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 获取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //4. 调用方法
        Brand brand = mapper.selectById(id);

        sqlSession.close();

        return brand;
    }
//BrandMapper


    /**
     * 根据id查询
     * 本来应该在BrandMapper.xml中创建映射,写SQL语句 但由于只有一句话,所以不创建了 直接写在这
     * @param id
     * @return
     */
    @Select("select * from tb_brand where id = #{id}")
    @ResultMap("brandResultMap")
    Brand selectById(int id);

javaWeb学习笔记 13 JSP技术-三层架构-SSM架构初学_第21张图片

//brand.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




    
    Title




<%----%>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
${brand.id}${status.count} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除
//Updata.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>





    
    修改品牌


修改品牌

<%--隐藏域,提交id--%> 品牌名称:
企业名称:
排序:
描述信息:
状态: 禁用 启用
禁用 启用
//UpdateServlet.java



package com.itheima.web;

import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/updateServlet")
public class UpdateServlet extends HttpServlet {
    private BrandService service = new BrandService();


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //处理POST请求的乱码问题
        request.setCharacterEncoding("utf-8");

        //1. 接收表单提交的数据,封装为一个Brand对象
        String id = request.getParameter("id");
        String brandName = request.getParameter("brandName");
        String companyName = request.getParameter("companyName");
        String ordered = request.getParameter("ordered");
        String description = request.getParameter("description");
        String status = request.getParameter("status");

        //封装为一个Brand对象
        Brand brand = new Brand();
        brand.setId(Integer.parseInt(id));
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setOrdered(Integer.parseInt(ordered));
        brand.setDescription(description);
        brand.setStatus(Integer.parseInt(status));


        //2. 调用service 完成修改
        service.update(brand);


        //3. 转发到查询所有Servlet
        request.getRequestDispatcher("/selectAllServlet").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
//BrandService.java

    /**
     * 修改
     * @param brand
     */
    public void update(Brand brand){

        //2. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 获取BrandMapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);

        //4. 调用方法
        mapper.update(brand);

        //提交事务
        sqlSession.commit();
        //释放资源
        sqlSession.close();

    }
//BrandMapper.java



    /**
     * 修改
     * @param brand
     */
    @Update("update tb_brand set brand_name = #{brandName},company_name = #{companyName},ordered = #{ordered},description = #{description},status = #{status} where id = #{id}")
    void update(Brand brand);

你可能感兴趣的:(自学,java,开发语言,后端)