java学习第四十六天内容

1.前一天重点内容复习

        什么是servlet

                全名:Servlet Applet

                 作用:服务器的连接器,服务于前后端交互

                范围:狭义是servlet接口,广义是所有继承了servlet的子实现类

        servlet执行流程

                 1.浏览器通过url请求访问服务器,对服务器发送HttpServletRequest请求并携带url(统一资源定位符)参数

                2.服务器接收到浏览器的请求之后,开始从HttpServletRequest请求的参数url(统一资源定位符)中解析出uri(项目地址+Servlet映射路径)

                3.服务器通过uri得到Servlet映射路径,去web.xml文件的映射配置中寻找此路径对应的Servlet名称

                4.服务器通过Servlet的名称找到该名称Servlet的基本配置,拿到此Servlet的全限定名称

                5.通过Servlet全限定名称可以获取到Servlet的字节码文件对象

                6.通过字节码文件对象可以创建当前Servlet的实例对象

                7.通过Servlet字节码文件对象调用方法并传入参数的class就可以获取到该Servlet里面的doGet()或者doPost()方法对象

                8.取消java语言访问限制,可以调用servlet里面的任何方法

                9.方法对象调用invoke方法,传入对象和参数即可执行servlet中的方法

                10.方法执行,返回给浏览器一段内容

        jdbc工具类DBUtils操作步骤

                导入dbutils包

                创建QueryRunner对象

                        public QueryRunner(DataSource ds):参数为数据源对象,自动提交模式

                        public QueryRunner():手动提交模式

                准备参数化sql语句

                QueryRunner对象执行sql语句

                        public int update(String sql,Object、、、、params);:添加,删除,修改sql语句

                                参数1为参数化sql语句

                                参数2为给占位符赋值的实际参数

                        public<T> t query(String sql,ResultSetHandler<T> rsh, Object、、、params)

                                参数1为参数化sql语句

                                参数2为接口,ResultSetHandler:针对查询结果集数据表进行处理

                                        子实现类

                                                BeanListHandler<T>:将查询的每一条记录封装到T中,然后结果的多条记录封装到List<T>集合中

                                                BeanHandler<T>:将查询的一条记录封装到T中,返回当前T

                                                ScalarHandler<T>:查询单行单列数据封装到Object中

                                参数3为sql的实际参数

2.servlet本质

        实现了servlet接口的普通的具体的java类,将HttpServlet中的具体doGet和doPost进行重写,以实现自己的业务

3.servlet架构体系

        Servlet接口

                构造servlet,然后使用init方法将其初始化

                处理来自客户端对service方法的所有调用

                从服务中取出servlet,使用destroy方法销毁它,最终进行垃圾回收并终止它

        GenericServlet抽象类

                重写了servlet接口中的部分功能,如init方法

                提供自己的特有功能,如ServletContext方法

        HttpServlet抽象类

                重写service方法,通过判断提交方式来确定交由doGet方法处理还是由doPost方法处理

        ServletDemo具体类

                重写doGet和doPost方法,覆盖父类处理方法,处理方法中实现自己的业务逻辑

4.servlet的生命周期

        1.创建:调用无参构造方法创建对象

        2.初始化:调用init方法进行初始化

        3.执行业务:调用service方法执行业务逻辑代码 

        4.销毁:服务器正常关闭,调用destroy方法销毁servlet对象

5.如何优化servlet

        servlet是单列模式,内存中始终只有一个对象,可以在web容器启动时候,就创建一个servlet对象,在servlet基本配置中,设定servlet优先级load-on-startup为1

6.ServletConfig对象

        介绍:servlet的配置对象‘,每一个servlet对象都有自己的配置对象

’        作用:

                public String getServletName():获取servlet类名

                public String getInitParameter(String name):通过初始化参数名称获取参数内容

                public Enumeration<E> getInitParameterNames():获取Servlet里面的所有参数内容

7.ServletContext全局对象的作用

        作用一:获取上下文路径

                public String getContextPath()

                        简单方式:通过请求对象request的getContextPath()方法获得

        作用二:获取全局参数

                public String getInitParameter(String name):通过参数名称获取参数值

                public Enumeration<E> getInitParameterNames():获取全部参数名称

        作用三:请求转发

                public RequestDispatcher getRequestDispatcher(String path):  指定路径资源的包装器

                public void forward(ServletRequest request,ServletResponse response):将请求从一个servlet转发到另外一个资源

                直接方式:request.getRequestDispatcher(String path).forward(ServletRequest request,ServletResponse response);

                原理:浏览器请求访问原来的servlet,原servlet里面将这个访问请求转发给另外一个资源,并将回应对象也给到另外一个资源,即可达到访问原来servlet时,实际访问访问另一个资源

                特点:

                        1.地址栏没有变化,但是内容确实另外一个资源的

                        2.整个请求转发的过程中,两次request对象一致,第一次请求访问原servlet,原servlet将请求和相应对象都给了某个资源的包装器对象

                        3.某个jsp页面有业务需求,则在后台跳转页面时,都采用请求转发

                        4.请求转发可以访问当前web项目下所有资源文件

        作用四:作为域对象在不同servlet中通信

                setAttribute(String name.Object object):将name对应的值绑定到域对象中

                getAttribute(String name):从域对象中获取指定name的值

                removeAttribute(String name):将绑定的属性内容移除掉

8.域对象

        pageContext:某个jsp页面有效

        HttpServletRequest:一次请求中有效

        HttpSession:一次会话中有效

        ServletContext:全局对象,整个web应用程序有效

9.jsp中获取请求对象

        jsp中的内置对象pageContext的request属性

10.jsp中的请求对象获得上下文路径

        请求对象的contextPath属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值