Servlet深入

23 篇文章 0 订阅
8 篇文章 0 订阅

servlet简介


一般的网页程序,是由我们通过浏览器访问来实现的,在这一过程中浏览器发送请求,服务器接收请求,并对请求做出响应,这就是我们熟悉的B/S模型(浏览器-服务器),而servlet就是对请求做出处理的组件,运行于支持java的应用服务器中。

关联源码:

  1. 下载tomcat源码: 

 2.在esclipse配置源码:

3.配置好后,就可以查看源码

 servlet体系结构

 Servlet中的Service、doGet、doPost 方法


浏览器发出请求时,不一定只能够调用service方法来处理请求,与service方法具有相同功能的处理功能的还有doGet和doPost方法,以下是他们之间的区别:

Service 方法

不管是 get 方式还是 post 方式的请求,如果 Servlet 类中有service 方法,则优先调用 Service 方法。

注意:如果在覆写的service方法中调用了父类的service方法(super.service(arg0, arg1)),则service方法处理完后,会再次根据请求方式响应的doGet和doPost方法执行。如果调用doGet或者doPost方法时发现并没有Servlet中并没有这种方法,会发生405错误,所以,一般情况下我们是不在覆写的service中调用父类的service方法的,避免出现405错误。

doGet 方法

在没有 service 方法的情况下如果是 get 方式的请求所调用的处理请求的方法

doPost 方法

在没有service方法的情况下如果是post方式的请求所调用的处理请求的方法

 Servlet的常见错误


·404错误:资源未找到

原因一:在请求地址中的servlet的别名书写错误。

原因二:虚拟项目名称拼写错误

·500错误:内部服务器错误

错误一:java.lang.ClassNotFoundException: com.bjsxt.servlet.ServletMothod

解决:

在web.xml中校验servlet类的全限定路径是否拼写错误。

错误二:

因为service方法体的代码执行错误导致

解决:

根据错误提示对service方法体中的代码进行错误更改。

·405错误:请求方式不支持

原因:

请求方式和servlet中的方法不匹配所造成的。

解决:

尽量使用service方法进行请求处理,并且不要再service方法中调用父类的service。

urlpartten:Servlet访问路径


1. 一个Servlet可以定义多个访问路径 :   @WebServlet({"/aa","/bb","/cc"})

  2. 路径定义规则:

  1. /xxx:路径匹配

  2. /xxx/xxx:多层路径,目录结构

  3. *.do:扩展名匹配

 读取和设置配置信息(ServletConfig):


注解的方式:

单个参数

@WebServlet(urlPatterns="/ServletDemo5",initParams =   {@WebInitParam(name="name",value="haoren")})

多个参数

@WebServlet(urlPatterns="/ServletDemo5",initParams = {@WebInitParam(name="name",value="haoren"),@WebInitParam(name="gender",value="男")})

 读取配置信息(ServletConfig):

public void doGet(HttpServletRequest request, HttpServletResponse response)

  throws ServletException, IOException {

  //String info = this.getServletConfig().getInitParameter("conf");

  //response.getWriter().print(info);

  //同时取多个

  Enumeration uu = this.getServletConfig().getInitParameterNames();

  while(uu.hasMoreElements()){

  String key  = (String) uu.nextElement();

  String value = getInitParameter(key);

  response.getWriter().print(value);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值