2023.3.6 jsp总结

1.jsp运行原理

 

jSP Servlet 是本质相同的技术。当一个 JSP 文件第一次被请求时, JSP引擎会将该JSP 编译成一个 Servlet ,并执行这个 Servlet 。如果 JSP文件被修改了,那么JSP 引擎会重新编译这个 JSP 。 JSP引擎对 JSP 编译时会生成两个文件分别是 .java 的源文件以及编译后的.class 文件,并放到 Tomcat work 目录的 Catalina 对应的虚拟主机目录中的org\apache\jsp 目录中。两个文件的名称会使用 JSP 的名称加”_jsp” 表示。
2. JSP Servlet 区别
1)JSP 以源文件形式部署到容器中。而 Servlet 需要编译成 class 文件后部署到容器中。
2)JSP 部署到 web 项目的根目录下或根目录下的其他子目录和静态同资源位于相同位置。而 Servlet 需要部署到WEB-INF/classes 目录中。
3)JSP 中的 HTML 代码会被 JSP 引擎放入到 Servlet out.write() 方法中。而在 Servlet 中我们需要自己通过对字符流输出流的操作生成响应的页面。
4)JSP 更擅长表现于页面显示, Servlet 更擅长于逻辑控制。
3. 请求转发
request.getRequestDispatcher("/test.jsp").forword(request,response);

 

4.实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class BrandModel {
    private Integer id;
    private String name;
    private String enterprise;
    private Integer sort;
    private String introduction;
    private Integer status;

}

5.

@WebServlet("/show")
public class ShowServlet extends HttpServlet {
    //把元素放到BrandService
    List<BrandModel> brandModels=new ArrayList<>();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        List<BrandModel> brandModels=new ArrayList<>();


        for (int i = 0; i < 3; i++) {
            BrandModel model = new BrandModel();
            //赋值
            model.setId(1);
            model.setName("加油");
            model.setEnterprise("加油");
            model.setIntroduction("加油");
//            model.setStatus(1);
            model.setStatus(1);
            brandModels.add(model);

        }

//        for (int i = 0; i < brandModels.size(); i+=2) {
//
//        }


        //查询元素
        BrandService brandService=new  BrandService();
        brandModels=brandService.findAll();
        //前端就可以拿到后端传过来的值
        req.setAttribute("brandModels",brandModels);
        req.getRequestDispatcher("/show.jsp").forward(req,resp);
    }
}

6.添加,查询

public class BrandService {
//   private List<BrandModel> brandModels=new ArrayList<>();

    /**
     * 增加品牌
     * @param brandModel
     * @return
     */
    public String add(BrandModel brandModel) {
//        brandModels.add(brandModel);
        brandModel.setId(BrandDao.brandModels.size()+1);//加序号
        BrandDao.brandModels.add(brandModel);
        return "success";
    }

    /**
     * 查找品牌
     * @return
     */
    public List<BrandModel> findAll() {
        return BrandDao.brandModels;
    }
}

7.dao

public class BrandDao {
    public static List<BrandModel> brandModels=new ArrayList<>();
}

8.工具类

public class Tool {

    private Tool(){

    }
    public static Integer strToInt(String value){
//        Integer intSort=0;
        try {
            return Integer.valueOf(value);
        }catch (Exception e){

        }
        return -1;
    }
}

9.添加

@WebServlet("/add")
public class AddServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
        resp.setCharacterEncoding(StandardCharsets.UTF_8.toString());
        String name = req.getParameter("name");
        String enterprise = req.getParameter("enterprise");
        String sort = req.getParameter("sort");
        String introduction = req.getParameter("introduction");
        String status = req.getParameter("status");
//封装数据到mode
//        Integer intSort=0;
//        try {
//            intSort=Integer.valueOf(sort);
//        }catch (Exception e){
//
//        }


//        Tool tool = new Tool();
        BrandModel brandModel=BrandModel
                .builder()
                .name(name)
                .enterprise(enterprise)
                .sort(Tool.strToInt(sort))
                .introduction(introduction)
                .status(Tool.strToInt(status))
                .build();

        //处理逻辑关系
        BrandService brandService = new BrandService();
//      int result =brandService.add(brandModel);
        //返回给前端
        String result =brandService.add(brandModel);
        //转发数据
//        if (true){
//            resp.sendRedirect("/success.jsp");
        resp.sendRedirect("/show");
//
//        }else {
//            resp.sendRedirect("/error.jsp");
//        }
//        req.setAttribute("result",result);
//        req.getRequestDispatcher("/success.jsp").forward(req,resp);


    }
}

10.修改

@WebServlet("/update")
public class UpdateServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String sort = req.getParameter("sort");
        BrandModel brandModel=new BrandModel();
        brandModel.setSort(Tool.strToInt(sort));
    }
}

11.里面的逻辑问题还得加深一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值