servlet基础学习总结

Servlet的任务

1、  读取客户端发送的显示的数据,包括HTML表单和一些客户端程序的表单

2、  读取客户端发送的隐式的数据,包括cookies、媒体类型等

3、  处理数据并产生结果

4、  向客户端返回显示的数据,比如HTML/XML等文本文件,二进制文件(gif图像),Excel

5、  向客户端返回隐式的Http响应,比如cookies,返回的文档类型

 

Servlet的生命周期

1、  init()方法进行初始化

只调用一次,会简单的加载或创建一些数据

2、  service()方法处理客户端的请求

service()方法有servlet容器调用,只需要根据需求重载doGet,doPost方法即可

3、  destroy()方法终止servlet

只调用一次,可以关闭数据库连接,结束后台线程,将servlet对象标记为垃圾回收

Ps:servlet容器中有很多servlet实例,一个线程执行一个servlet实例的service()方法

Servlet访问URL的配置

客户端都是通过URL来访问web服务器资源,类似于远程访问某一台计算机的文件系统(某一个文件夹下的资源)。要想访问servlet,就必须把servlet映射到某一个地址上。在web.xml中的配置如下

<servlet>

         <servlet-name>servlet的命名</servlet-name>

         <servlet-class>servlet类名</servlet-class>

</servlet>

 

<servlet-mapping>

         <servlet-name>与上面的servlet命名对应</servlet-name>

         <url-pattern>地址。。相对地址</url-pattern>

</servlet-mapping>

 

Ps:此处可以有很多<servlet-mapping>,而且可以是相同的servlet-name指向不同的URL,那样不同的URL都可以访问相同的servlet

缺省servletURL用斜杠(/)表示,只要是在web.xml中找不到对应的servlet-mapping都访问这个缺省的servlet

 

线程安全问题

多个客户端访问同一个servlet的时候,事实上是创建了多个线程,同时访问这个servlet,这样就存在多线程并发访问同一资源,可能会造成数据的错误。

网上给的解决办法:1、对对象加锁,但是改变了访问策略(相当于每一个客户端是排队访问);2、实现SingleThreadModel接口,事实上是实例化了多个对象,每一个线程相当于单线程访问,对资源的操作互不影响,但是这个方法过时(Dprecated)了

 

Servlet初始化参数

在web.xml中用<init-param>配置参数,格式如下

<servlet>

         <servlet-name>name</servlet-name>

         <servlet-class>Servlet.test.servletdemo</servlet-class>

         <!-- 配置servletdemo的初始化参数 -->

         <init-param>

                   <param-name>id</param-name>

                   <param-value>song</param-value>

         </init-param>

         <init-param>

                   <param-name>password</param-name>

                   <param-value>123456</param-value>

         <init-param>

</servlet>

 

可以在程序中用ServletConfig获取参数:当servlet配置了初始化参数后,web容器在创建servlet实例的时候会自动将参数封装到ServletConfig对象中,然后通过SevletConfig的方法(get**)获取参数

 

ServletContext对象

Web容器在启动时会为每一个web应用创建一个ServletContext对象,ServletConfig中维护了ServletContext的引用,因此可以通过ServletConfig中的方法得到web应用的ServletContext。每一个servlet共用一个ServletContext,因此可以利用ServletContex在servlet之间进行通讯。

ServletContext可以通过web.xml配置初始化参数,格式如下:

<context-param>

         <param-name>address</param-name>

         <param-value>Beijing.haidian.xueyuan.Road</param-value>

</context-param>

请求转发:一个对servletA的请求转发至servletB,这样就可以达到本来对A的地址访问,结果转到对B的地址访问,操作如下:

A的类中:

         ServletContext context = this.getServletContext();

         RequestDispatcher rd = context.getRequestDispatcher(“B的访问地址”);

         rd.forward(request, response);

B的类中,无变化

 

Servlet处理表单数据

1、  利用getParameter()方法可以很简单的获得传递的数据

2、  利用getParamtername()方法可以获得全部表单的数据

3、  利用getParameterValue(ParameterName)方法可以获得单值或多值的数据

 

 

Servlet可以通过方法获取HTTP请求的头部信息和设置HTTP响应的头部信息

HttpServletResponse对象可以调用senderror()方法,向客户端返回错误(状态码)

 

 

Servlet过滤器Filters(实现Filter接口)

配置和servlet类似,需要放在<filter>标签下,一个URL可以有多个过滤器,多个过滤器的顺序与web.xml中的顺序是一致的

调用的顺序:init----doFilter----destroy

 

Servlet异常处理

在web.xml中进行配置

首先定义一个servlet映射,将错误处理方法映射到错误页面

然后定义error-code的错误页面和exception-code的错误页面,配置如下

<error-page>

       <error-code>状态码</error-code>

       <location>错误处理页面的地址</location>

  </error-page>

  <error-page>

       <exception-type>异常完整名(eg.  java.io.IOException)</exception-type>

       <location>异常处理页面的地址</location>

  </error-page>

(个人观点:事实上,就是一旦出现这种错误或者抛出了这种异常就跳到定义的页面,跳到定义的页面之后又会被servlet拦截,执行相应的servlet)

 

 

Servlet Cookie

存储在客户端计算机上的文本文件

识别用户:服务器脚本向浏览器发送cookies,比如姓名,识别号码等;浏览器将cookies存储在本地;下一次浏览器访问服务器时将发送cookies给服务器,服务器通过cookies来识别用户。

Cookies可以读取,查找,设置,删除(将生存时间置为0然后添加到响应头即可)

 

Servlet Session

主要是用来维持服务器与客户端的交流信息

每一个session都有一个sessionid,服务器可以通过调用request.getSession()方法获取HttpSession对象,然后通过一系列方法可以对其进行操作

 

网页重定向

通过设置response的status和header,将网页重定向到另外一个网页,具体方法如下:

response.setStatus(response.SC_MOVED_TEMPORARILY);

response.setHeader("location", site);

site是新站点

 

网站点击计数器

可以在servlet或者过滤器Filter中实现,实现方法如下:

设置一个全局变量,每次调用do*方法的时候计数器加1,;如果只想对session会话计数,只需要增加isNew()方法来进行判断;还可以将计数器的值存入数据库,每次在init()方法的时候读取这个值,在destroy()方法中将值写会数据库

 

页面自动刷新

利用HttpServletResponse对象的setHeader方法设置刷新时间,实现如下:

response.setheader(“refresh”, 5);//刷新时间间隔为5s

转载于:https://www.cnblogs.com/songxh-scse/p/5570638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 宿舍管理系统是一种针对大学、学校里的宿舍管理而开发的系统。对于大学来说,宿舍管理系统可以帮助学校方便地管理学生宿舍信息、入住信息、设备管理以及一些其他相关功能。 首先,宿舍管理系统需要有一个用户登录界面,可以区分管理员和学生用户。管理员拥有对系统的全部权限,可以添加、删除、修改学生宿舍信息,管理宿舍房间以及设备的分配。而学生用户能够查看自己的宿舍信息,申请更换宿舍,反馈宿舍设备问题等。 宿舍管理系统还需要一个信息管理模块,用于管理宿舍楼、宿舍房间和设备等信息。管理员可以对宿舍楼进行分配、调整,对宿舍房间进行分配、调整,并且可以对设备进行添加、修改和删除等操作。 另外,宿舍管理系统还需要一个入住管理模块,用于管理学生的入住信息。管理员可以添加学生的入住信息,包括学生的基本信息、宿舍楼、宿舍房间等信息,还可以对学生的入住情况进行统计和查询。 宿舍管理系统还需要一个设备管理模块,用于管理宿舍设备的分配和维修。管理员可以对设备进行添加、修改和删除,还可以记录设备的维修情况和维修人员等信息。 总结来说,宿舍管理系统通过提供一个方便、高效的管理平台,可以帮助学校方便地管理学生宿舍信息、入住信息、设备管理等功能。对于大学来说,宿舍管理系统是提升宿舍管理效率、提供更好的宿舍服务的重要工具。而在实际开发过程中,Java Web开发实战经典基础篇中的知识和技术将会对宿舍管理系统的开发起到重要的指导作用。 ### 回答2: 宿舍管理系统是一个用于管理学生宿舍信息的系统,可以实现宿舍分配、入住管理、费用管理、报修管理等功能。 Java Web开发实战经典基础篇是一本教授Java Web开发的经典教材,其中包含了Java Web开发的基础知识、技术和案例分析。通过学习这本教材,读者可以掌握Java Web开发的基本概念和流程,了解Java Web应用的开发框架和工具,能够独立完成简单的Java Web项目开发。 宿舍管理系统的开发可以借助Java Web开发实战经典基础篇提供的知识和案例进行。首先,我们可以使用Java Web开发中的MVC模式对系统进行设计和实现。MVC模式将系统分为Model、View和Controller三个层次,分别负责处理数据逻辑、展示和用户交互。 在宿舍管理系统中,Model层负责数据库的操作和管理,包括学生和宿舍的信息存储和查询;View层负责系统的界面展示,包括宿舍列表、学生信息和费用情况等;Controller层负责处理用户的请求和逻辑处理,包括学生入住申请、费用缴纳和报修处理等操作。 在开发过程中,可以使用Java Web开发实战经典基础篇提供的技术和工具来辅助开发。例如,可以使用Java的JSP和Servlet技术来实现系统的界面和请求处理;可以使用Java的JDBC技术来操作数据库;可以使用HTML和CSS来设计和美化系统的界面。 总之,通过学习和应用Java Web开发实战经典基础篇中的知识,我们可以开发出一个功能完善的宿舍管理系统。这个系统不仅可以提高宿舍管理的效率,还可以提供学生入住和居住质量的监管,为学校和学生提供便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值