【JavaWeb】15-Servlet

1. 基本概念
    动态web开发技术,本质上是一个类,可以运行在服务器端的程序
2. 作用:
    接收用户请求,处理业务逻辑,生成动态的web内容
3. 使用:
    1. 编写一个类
        1. 继承HttpServlet类
        2. 重写doGet方法、doPost方法
public class HelloController extends HttpServlet {

	private static final long serialVersionUID = 7285296079402191283L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 编写处理get请求的代码
		System.out.println("hello controller");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 如果是post请求,直接调get请求的代码
		doGet(req, resp);
	}
	
}
  1. 编写配置文件web.xml
1. 注册servlet
<servlet>
  	<servlet-name>servlet别名</servlet-name>
  	<servlet-class>servlet类全限定名</servlet-class>
  </servlet>
  
 2. 绑定请求路径
 <servlet-mapping>
  	<servlet-name>servlet别名</servlet-name>
  	<url-pattern>/请求路径</url-pattern>
  </servlet-mapping>
  
  url-pattern多种配置方式:
	1.完全匹配,必须以“/”开始,例如:/hello、/a/b
  	2.目录匹配,必须以“/”开始,以“*”结尾,例如:/a/*、/*
  	3.后缀名匹配,以“*”开始,以各种字符结尾,例如:*.jsp
  	4.优先级:完全匹配 > 目录匹配 > 后缀名匹配
  	
 3. 访问的请求路径
    http://主机地址:端口号/项目根路径/请求路径
  1. web3.0以后可以直接使用注释进行配置
直接在servlet类上加上注解@WebServlet("/请求路径")
该注解直接实现了servlet的注册和映射
  1. servlet的生命周期
1.servlet的体系结构
  			
  			Servlet接口
  				  |
  			GenericServlet抽象类
  				  |
  			HttpServlet抽象类
  				  |
  			自定义servlet
  			
  			Servlet接口的常用方法:
  			    void init(ServletConfig config):初始化
  			    void service(ServletRequest req, ServletResponse resp):服务
  			    void destory():销毁
  			   
  		    GenericServlet抽象类
  		        除了service方法没有做实现其他的方法都做了实现
  		        
  		    HttpServelt抽象类:
  		        对service方法做了实现,判断请求方式,根据不同的请求方式调用对应的方法
  		        
  		    自定义Servlet:
  		        需要实现HttpServlet中未实现的各种请求处理方法。

方法的生命周期体现

init : 执行时机:第一次访问;执行次数:一次
service:执行时机:每次接收到请求;执行次数:请求一次,执行一次
destory:执行时机:服务器正常关闭时;执行次数:一次 

实例:

@WebServlet("/hi")
public class HiController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 解决请求乱码
		request.setCharacterEncoding("utf-8");
		
		// 解决响应乱码
		response.setContentType("text/html; charset=UTF-8");
		
		// 获取请求参数
		String name = request.getParameter("name");
		
		System.out.println("hi " + name);
		
		// 回写内容
		response.getWriter().print("<h1>hi " + name + "</h1>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值