ecplise中创建Dynamic Web Project时版本不同注册sevlet信息的差异以及servlet通过XML注册信息

ecplise中创建Dynamic web project时版本不同注册sevlet信息的差异

我在ecplise一直使用的web工程是2.5版本的 最近在创建新版本web工程时发现了一点不同——web工程版本不同注册sevlet方式不同

2.5及之前版本
  • 如果通过类实现Serlvet的方法来使用serlvet时 需要在web.xml文件中注册servlet信息 如下图 :在这里插入图片描述

  • 在web.xml文件中注册的信息为:

在这里插入图片描述

  • 过程如下
  1. 通过tomcat找到项目名称
  2. 在web.xml文件中找到url-pattern代表搜索时的输入的内容,在这里内容为/prac
  3. 通过servlet-mapping找到servlet-name为parc
  4. 由此找到上面的servlet中的servlet-name
  5. 之后找到代表路径通过servlet-class
  6. 执行类中方法
    结果如下:
    在这里插入图片描述

注意:在XML中对servlet信息的注册过程中servlet 和 servlet mapping 中的 servlet-name需要保持保持一致但是可为任意,而url-pattern 的内容也可以任意,但是搜索时需要更改对应url内容 如url-pattern 的内容/a 搜索的url为localhost:8080/PracPreviousVersion/a

  • 通过类继承HttpServlet时注册servlet信息原理一致,继承HttpServlet就类似于Adaptor 的设计模式
  • 当然一般来说直接写servlet文件就可以,此时在web.xml文件时自动就会注册servlet文件信息

如果是3.0版本即以上
  • 创建servlet文件时通过注释来注册信息,在默认情况在webcontent中隐藏了web.xml文件
    在这里插入图片描述
  • 通过自动创建servlet文件自动生成注册信息

在这里插入图片描述

  • 如果实现servlet时需要添加注释信息
    通过@WebServlet("/ServletDemo02") 代表url-pattern 同理 url-pattern 的内容可以更改 对应url查找也需要该改,使用注释的方式也可以添加initParam 或者特定urlpattern 代码如下:
package ServletDemo;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

@WebServlet(name="/ServletDemo02",urlPatterns= {"/aa"}, initParams= {
		@WebInitParam(name="admin",value="Alan"),	
		@WebInitParam(name="email",value="admin@example.com"),	
	})
public class ServletDemo02 implements Servlet{
	
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		String name=getServletConfig().getInitParameter("admin");
		String email=getServletConfig().getInitParameter("email");
		res.getWriter().print("name: "+name);
		res.getWriter().print(" email: "+email);
		
	}

	@Override
	public void destroy() {
	}

	@Override
	public ServletConfig getServletConfig() {
		
		return null;
	}
	@Override
	public String getServletInfo() {
		
		return null;
	}
	@Override
	public void init(ServletConfig config) throws ServletException {
	}
}

在@WebServlet中initParams属性中传递了admin和email两个参数


@WebServlet(name="/ServletDemo02",urlPatterns= {"/aa"}, initParams= {
		@WebInitParam(name="admin",value="Alan"),	
		@WebInitParam(name="email",value="admin@example.com"),	
	})

通过调用这个URL: localhost:8080/servletdemo/a 访问信息
在这里插入图片描述

自己在使用新的版本时,还和以前的习惯一样,把其他东西删除时,运行后就404了之后还一直没找到错,本篇警示一下自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值