Edgar后端学习-jsp+servlet的crud的闲聊-servlet-3

本文介绍了使用jsp+servlet进行CRUD操作的基本概念和流程,探讨了Servlet的生命周期、doGet/d doPost/service方法、转发与重定向的区别。还讨论了JSP的加载执行过程,以及在实际开发中遇到的问题,如隐藏ID的安全性、删除确认等。文章通过web.xml配置解析请求流向,并强调了DAO层和实体类在减少代码量上的作用。
摘要由CSDN通过智能技术生成

写在前面

1.刚跟小yao交流一下说这块还是很像以前的jdbc的,那一个部分的crud。
所以我觉得可以对比来看看吧,都是小白理解------

2第一这块开始结合了前后端的东西,通过最重要的http这种协议来实现前后端的交互,不再是控制台小白了,所以说这么一想我觉得这块最重要的就是理解一下http里面的转发和重定向,另外一些具体细节(比如说绝对路径啊,相对路径啊),出现的bug可以一起分享一下
3.另外我觉得就是从技术的角度,理解一下业务的流程和细节。你如说你crud整完 ,高低应该给用户看一眼,再比如说,你删除的时候,高低问下用户是不是确认删除。

整体的知识性的定义

1.servlet的生命周期、几个重要方法的重写的关系(doget、dopost、service):
Servlet的生命周期包含了下面4个阶段:
1.加载和实例化
2.初始化–init()
3.请求处理–service()
4.服务终止–destroy()
service()方法的职责:核心方法
可以重写doget、dopost方法,默认访问service

 service()方法为Servlet的核心方法,客户端的业务逻辑应该在该方法内执行,典型的服务方法的开发流程为:

解析客户端请求-〉执行业务逻辑-〉输出响应页面到客户端

2.转发和重定向的区别(包括绝对相对路径的问题):
转发就是不涉及到url,不会产生新的reuqest请求,那我理解就是转发到新的jsp页面里面,request直接内置了,你通过这个requset数据的绑定直接扔到,下一个新的jsp页面里面。
重定向:就是产生一个新的需求,这个需求还要通过xml去拦截一下,然后再走一个继承servlet的service。
我觉得其实本质都是一样的都是再进去一个servlet。

转发

request.setAttribute("persons",s1);
RequestDispatcher rd=request.getRequestDispatcher("showall.jsp");
rd.forward(request,response)

重定向

String url=request.getContextPath()+"/findall";
        response.sendRedirect(url);

路径问题:是有相对与浏览器地址,还是服务器地址这种复杂说法。
我理解就是加/ 那就是绝对路径–得从8080来开始算
相对路径不加/从应用开始算。
我这里测试了一下,重定向的时候我直接加相对路径一点毛病没有。

String url="findall";
        response.sendRedirect(url);

3.jsp的原理、加载执行过程(第一次和第二次)解决了什么问题:
转载:

https://blog.csdn.net/weixin_42529699/article/details/81303861

自己理解:
1.jsp–java servlet page 这么说就很清晰了,就是一个servlet只是放在前端里面融合了一下
2.加载分第一次加载和第二次加载:第一次的话会编译成class文件,再执行service方法。如果第二次没有更改代码的话直接调用service方法就ok了。service方法在jsp里面隐藏了,包括各种输入输出流都是简化了,然后内置的request等对象等等。。。。
3.解决问题:就是能够实时动态展示,不至于写死在后端里面。
4.新手问题:具体怎么融合进去,当时在for里面写前端表格的问题给我愁坏了。

4.整个web框架-从浏览器到服务器再到数据库
tomcat就是服务器应用

层次分析

1.前端
最前面的是各种页面,用来与客户互动,请用户进行输入,对用户的命令进行反馈。这里面前期用的是html,然后一键表格发送。
一些要说的
1.隐藏ID,我觉得不应该让客户更改信息的时候把自己ID改了吧,毕竟在数据库里他也是是主键,不能动啊

  <input type="text" value="<%=request.getParameter("id")%>" hidden="true" name="id">

2.删除提示

2.service层
我的理解就是service层有多少,那么dao层就有多少功能点,因为比较简单清晰,这次我是把dao层所有功能封装到一起了,就是增删改查功能点都在一起了。
service层我觉得是这一部分的重点,从刚开始你要从request上面拽下来用户发过来的信息,再到回传的时候,进行数据绑定,转发dao层回传的数据给前端。后期涉及到重定向贴近现实需求。
service层的话实现的话,用的是继承HttpSevrlet类。也可以继承servlet类,先不讨论。

3.dao层

有前面jdbc扎实的底子,这一块可以说是最简单的。也有一部分细节问题。其实就是传参的问题,入口点参数要清晰。比如说更改信息这一块,一定要待着id一直带到dao层,带到数据库。
这时候,前端页面我设计的是隐藏了id.–前面有说–

4.不得不说的核心 web.xml

这个东西就相当于路口指挥的交警,指挥着请求的方向,告诉它到底去哪个servlet。很重要,很重要,很重要。

5.差点忘了的实体类和DBUTIL-也是很重要的,我们封装这两个,减少代码量。

service层的代码分享

查询

public class getperson extends HttpServlet {
   
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
   
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer=response.getWriter();
        List<person> s1;
        Persondao persondao=new Persondao();
        try {
   
            s1 = persondao.getall();
            //需要将绑定数据的request发送到指定的页面 ---绑定和转发
            request.setAttribute(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值