java web笔记之servlet初识

本文详细介绍了一个简单的Servlet实例,包括其核心方法doGet和doPost的功能实现,以及如何通过web.xml进行配置。此外还展示了如何处理请求参数并返回HTML响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.废话不多说,直接上码做介绍

package com.wang.firstServlet;

import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class FirstServlet extends HttpServlet {
	
	
	/**
	 * 以get方式访问页面时执行该函数
	 * 执行doGet前会先执行 getLastModified,如果浏览器发现getLastModified返回的数值
	 * 与上次访问时返回的数值相同,则认为该文档没有更新,浏览器采用缓存而不执行doGet
	 * 如果getLastModified返回-1,则认为时时刻更新的,总是执行该函数
	 * 
	 */
	public void doGet(HttpServletRequest request,HttpServletResponse response){
		this.log("执行 doGet方法......");
		try {
			this.execute(request, response);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 以post方式访问页面时执行该函数。执行前不会 执行getLastModified
	 */
	public void doPost(HttpServletRequest request,HttpServletResponse response){
		this.log("执行doPost方法......");
		try {
			this.execute(request, response);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	/**
	 * 返回该servlet生成的文档的更新时间。对GET方式访问有效
	 * 返回的时间为相对于1970.1.1 08:00:00的毫秒数
	 * 如果为-1则认为时实时更新。默认为-1
	 * @param request
	 * @param response
	 * @return
	 */
	public long getLastModified(HttpServletRequest request,HttpServletResponse response)throws Exception{
		this.log("执行getLastModified方法......");
		return -1;
		
	}
	
	private void execute(HttpServletRequest request,HttpServletResponse response) throws Exception{
		request.setCharacterEncoding("utf-8");  //设置request编码
		response.setCharacterEncoding("utf-8");	//设置response编码
		
		String requestUrl = request.getRequestURI();
		
		String method = request.getMethod();
		
		String param = request.getParameter("param");
		
		response.setContentType("text/html");
		
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		
		out.println("<HTML>");
		
		out.println("<HEAD><TITLE>the first servlet</TITLE></HEAD>");
		
		out.println("<BODY>");
		
		out.println("以"+method+"方式访问该页面,取到的param值:"+param+"<br/>");
		
		out.println("<form action='"+requestUrl+"' method='get'><input type='text' name='param' value='param string'><input type='submit' value='以get方式查询页面 "+requestUrl+"'></form>");
		
		out.println("<form action='"+requestUrl+"' method='post'><input type='text' name='param' value='param string'><input type='submit' value='以post方式提交到页面"+requestUrl+"'></form>");
		
		//客户端浏览器读取该文档的更新时间
		out.println(" <script>document.write('本页最后的更新时间'+document.lastModified); </script>");
		
		out.println(" </BODY>");
		
		out.println(" </HTML>");
		
		out.flush();
		
		out.close();
		
		
	}
	
	

}

2.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>firstServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  
  <servlet>
  <!--servlet-name必须保证名称唯一,该名称供其他标签如servlet-mapping,filter等使用  -->
  	<servlet-name>FirstServlet</servlet-name>
  	<servlet-class>com.wang.firstServlet.FirstServlet</servlet-class>
  	<!--servlet中可以使用 getServletContext.getInitParam(String paramName)来取得配置的初始化参数 值  -->
  	<init-param>
  		<param-name>message</param-name>
  		<param-value>welcome to myServlet</param-value>
  	</init-param>
  	
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
  	
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  
  	<servlet-mapping>
		<servlet-name>FirstServlet</servlet-name>
		<url-pattern>*.action</url-pattern>

	</servlet-mapping>
</web-app>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值