Servlet初识

1、什么是Servlet
  • Servlet是JavaWeb的三大组件之一(Servlet,Listener,Filter),它的工作就是:接受客户端的请求数据;完成请求;返回响应。
  • Servlet是和平台无关的服务器端组件,它运行在Servlet容器中(如:Tomcat Servlet容器负责Servlet和客户的通信以及调用Servlet的方法)
  • 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
2、如何编写一个Servelt

有三种方法:
         * 实现javax.servlet.Servlet接口 继承
         * javax.servlet.GenerlcServlet类继承
         * javax.servlet.http.HttpServlet类 (通常使用的方法)
Servlet中的方法大多数不由我们来调用,而是由Tomcat调用。并且Servlet的对象也不是由我们来创建,由Tomcat创建。

3、如何让浏览器能够访问Servlet?

                需要给Servlet指定一个Servlet路径(让Servlet与一个路径绑定在一起)

 给Servlet配置Servlet路径,这需要在web.xml中对Servlet进行配置

<servlet>
                        <servlet-name>xxx</servlet-name>
                        <servlet-class>cn.itcast.servlet.AServlet</servlet-class>      
                </servlet>

                <servlet-mapping>
                        <servlet-name>xxx</servlet-name>
                        <url-pattern>/跟servlet绑定路径</url-pattern>

注意:
        a>给类AServlet起个名字叫xxx,注意:写servlet类的全名
        b>先得有名为xxx的servlet,然后要给xxx配置什么路径,在mapping中完成
        c>说明:
        这个绑定的路径一旦被访问,实际上是访问名为xxx的servlet,而这个servlet的类是cn.itcast.servlet.AServlet。得到这个字符串,服务器根据反射机制,会自动创建该类的对象,执行该类的方法。

4、Servlet的生命周期
  • 加载和实例化
    Servlet容器负责加载和实例化Servlet,容器是通过Java的反射API(使用类加载器加载servlet类)来创建Servlet实例,调用的是Servlet的默认构造方法,所以我们在编写Servlet类的时候,不应该提供带参数的构造方法。
  • init:只被调用一次。在创建好实例后立即被调用。
  • service:每次请求都会调用,实际用于响应请求
  • destory:只被调用一次。当前Servlet所在的web应用被卸载前调用,用于释放当前Servlet所占用的资源
5、Servlet接口中的方法
        void init(ServletConfig arg0) //Servlet对象创建之后执 (做一些初始化操作)

        void service(ServletRequest request, ServletResponse response)//每次处理请求都是处理这个方法

        void destroy() //Servlet被销毁之前调用,只执行一次(释放那些非内存资源)


        ServletConfig getServletConfig()//获取Servlet的配置信息


        String getServletInfo()//获取Servlet的信息
6、load-on-startup参数

用以指定Servlet被创建的时机。若为负数,则在第一次请求时被创建。若为0或正数,则在当前web应用被Servlet容器加载时创建,且数组越小越早被创建。

    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.ithings.servlet.HelloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
7、serlvet-mapping通配符

可以用匹配符配置,但是要注意,必须是.do或者 /开头的以/* 结束的路径。

对于如下的一些映射关系:

    Servlet1 映射到 /abc/* 

    Servlet2 映射到 /* 

    Servlet3 映射到 /abc 

    Servlet4 映射到 *.do 

问题:

    当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应.        

        【Servlet引擎将调用Servlet1。】

    当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应.           

        【Servlet引擎将调用Servlet3。】

    当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应.  

        【Servlet引擎将调用Servlet1。】

    当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应.                            

        【Servlet引擎将调用Servlet2。】

    当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应.    

        【Servlet引擎将调用Servlet2。】
8、ServletConfig接口
  • 1个ServletConfig对象,对应一段web.xml中servlet的配置信息
  • ServletConfig接口的方法;
1、ServletContext getServletCOntext()        //获取Servlet上下文对象
2、String getServletName()                   //获取的是<servlet-name>中的内容
3、String getInitParameter(String name)      //通过名称获取指定初始化参数的值
4、Enumeration getInitParamenterNames()      //获取所有初始化参数的名称
9、ServletContext对象(重要)

             代表当前web应用,可从中获取当前web应用的各个信息。一个项目就一个ServletContext对象。我们可以在N多个servlet中来获取这个唯一的对象,使用它来给多个Servlet传递数据(可以用它来完成共享数据)

①概述
             ServletContext对象的创建是在服务器启动时,销毁时服务器关闭时。(与服务器同生死)
             作用:
                          不同Servlet之间传递共享数据(域对象)

②获取ServletContext
             在void init(ServletConfig config)中,getServletContext()方法可以获取到
                          ServletContext context=config.getServletContext();

             GenericServlet或HttpServlet中获取ServletContext
                          GenericServlet类中有ServletContext()方法。使用this.getServletContext()

③域对象功能
              域对象可以理解为:域对象就是用来在多个Servlet中传递数据

    ** javaweb有四大域对象
            PageContext
            ServletRequest
            HttpSession
            ServletContext

            所有域对象都有存取数据的功能。因为域对象内部有一个Map,用来存储数据,

    ** ServletContext操作数据的方法:(同时也是域对象的基本方法)

            ** void setAttribute(String name ,object value)
                            //用来存储一个对象,可以称之为存储一个域属性,使用键值对的方式。
            ** object getAttribute(String name):
                            获取ServletContext中的数据。

            ** void removeAtteibute(String name):
                            移除ServletContext中的域属性
            ** Enumeration getAttributeNames();
                            获取所有域属性的名称

④全局应用参数
             可以配置公共的初始化参数,为所有的Servlet而用,使用<context-param>标签

<context-param>
        <param-name>name</param-name>
        <param-vlaue>value</param-vlaue>
</context-param>

⑤获取相关资源的方法

1、获取部署在服务器上的绝对路径    
            servletContext.getRealPath("");
2、获取当前web应用的名称
            getContextPath() 
2、获取资源流
            InputStram is=servletContext.getResourceAsStream("");
3、获取指定目录下所有资源路径
            Set set=servletContext.getRescourcePaths("")
内容概要:本文档提供了关于“微型车间生产线的设计与生产数据采集试验研究”的毕业设计复现代码,涵盖从论文结构生成、机械结构设计、PLC控制系统设计、生产数据采集与分析系统、有限元分析、进度管理、文献管理和论文排版系统的完整实现。通过Python代码和API调用,详细展示了各个模块的功能实现和相互协作。例如,利用SolidWorks API设计机械结构,通过PLC控制系统模拟生产流程,使用数据分析工具进行生产数据的采集和异常检测,以及利用进度管理系统规划项目时间表。 适合人群:具有机械工程、自动化控制或计算机编程基础的学生或研究人员,尤其是从事智能制造领域相关工作的人员。 使用场景及目标:①帮助学生或研究人员快速搭建和理解微型车间生产线的设计与实现;②提供完整的代码框架,便于修改和扩展以适应不同的应用场景;③作为教学或科研项目的参考资料,用于学习和研究智能制造技术。 阅读建议:此资源不仅包含详细的代码实现,还涉及多个学科领域的知识,如机械设计、电气控制、数据分析等。因此,在学习过程中,建议读者结合实际操作,逐步理解每个模块的功能和原理,并尝试调整参数以观察不同设置下的系统表现。同时,可以参考提供的文献资料,深入研究相关理论和技术背景。
本次的学生体质健康信息管理网站,按照用户的角色可以分为教师与学生,后台设置管理员角色来对学生的信息进行管理。,设计如下: 1、后台管理系统 后台管理系统主要是为该系统的管理员提供信息管理服务的系统,具体包括的功能模块如下: (1)管理员信息管理 (2)教师信息管理 (3)学生信息管理 (4)健康信息统计(图形化进行健康,亚健康等学生的信息数量统计) 2、教师角色的功能模块设计 教师角色所需要的功能模块主要包括了如下的一些内容: (1)个人资料修改 (2)学生体质健康管理:录入相关数据,包括但不限于身高、体重、肺活量、视力等生理指标以及运动能力、身体成分、骨密度等健康指标,并且设置健康,亚健康状态 (3)学生健康建议:根据体质信息,进行学生健康的建议 (4)健康预警:对健康出问题的学生,进行健康预警 (5)饮食和锻炼情况管理,查看 3、学生角色 学生角色可以通过该信息网站看到个人的基本信息,能够看到教师给与学生的健康建议等,功能模块设计如下: (1)个人资料修改 (2)我的健康建议查看 (3)我的健康预警 (4)饮食和锻炼情况管理,记录平时的饮食和锻炼情况 完整前后端源码,部署后可正常运行! 环境说明 开发语言:Java后端 框架:ssm,mybatis JDK版本:JDK1.8+ 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:eclipse/idea Maven包:Maven3.3+ 部署容器:tomcat7.5+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值