Servlet的创建、配置以及访问原理

Servlet的创建

public class HelloServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//request:请求的输入;response:响应的输出
		request.setCharacterEncoding("UTF-8");//设置请求的字符集编码
//		request.getInputStream();//请求正文的输入流
		String method = request.getMethod();//获取请求方式:get/post
		String name = request.getParameter("name");//获取请求参数
		response.setCharacterEncoding("UTF-8");//设置响应的字符集编码
		response.setContentType("text/html;charset=UTF-8");//设置文档类型和字符集编码
//		response.getOutputStream();//响应正文的输出流
		PrintWriter out = response.getWriter();//获取字符输出流
		//将响应正文输出
		out.println("<h1>methon:"+method+"</h1>");
		out.println("<h2>name:"+name+"</h2>");
		out.println("<h3>date:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"</h3>");
		out.flush();
		out.close();
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

Servlet的配置

方式一:web.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Tomcat_yh</display-name>
  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>com.yh.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/hello.let</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/hello/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>*.hello</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>RetetionServlet</servlet-name>
  	<servlet-class>com.yh.servlet.RetetionServlet</servlet-class>
  	<init-param>
  	 <param-name>yh</param-name>
  	 <param-value>zf</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>RetetionServlet</servlet-name>
  	<url-pattern>/retetion.let</url-pattern>
  </servlet-mapping>
</web-app>

方式二:Annotation注解

//@WebServlet(value={"/hello1.let","/hello2.let"})
//@WebServlet("/hello.let")
//@WebServlet("hello.let")
@WebServlet({"/hello1.let","/hello1/*","*.hello1"})
//注解,相当于web.xml配置文件中的servlet配置
public class HelloServlet extends HttpServlet{}

访问原理
index.jsp

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>第一个JSP程序</h1>
<%=new java.util.Date() %>
<h2>修改了</h2>
<%=this.getClass().getResource("/") %>
<a href="hello.let">hello.let</a>
<a href="hello/yh">/hello/*</a>
<a href="yh.hello">/*.hello</a>
<br>
<a href="hello.let?name=yh&a=b&b=c">hello.let?name=yh</a>
<form action="hello.let"><input name="name"><button>get</button></form>
<form action="hello.let" method="post"><input name="name"><button>post</button></form>
<br>
@WebServlet
<a href="hello1.let">hello1.let</a>
<a href="hello1/yh">/hello1/*</a>
<a href="yh.hello1">/*.hello1</a>
<br>
<a href="retetion.let">retetion.let</a>
</body>
</html>

注:以下只是我自己对Servlet访问时的一些理解
网页在对创建的Servlet进行访问时;
1.首先找到是配置文件web.xml,然后找到< servlet-mapping >标签下的< url-pattern >标签,将网页的文件名与< url-pattern >中的名称进行匹配
2.匹配到之后在同一个< servlet-mapping >找到< param-name >;然后在< servlet >中的< servlet-name >找到对应的名字
3.找到对应的< servlet-name >之后在同一个< servlet >找到< servlet-class >,servlet-class中存放的就是自己书写的Servlet的路径
4.在网页上进行访问时,输入本机地址:端口号(默认8080)/虚拟路径(虚拟路径可以自己进行修改;我上一篇写的便是虚拟路径的修改)/访问的文件名加后缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值