JavaWeb01_Servlet

JavaWeb01_Servlet


入门项目:

创建Maven项目,选择webapp模板。

依赖:

<dependencies>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>4.0.1</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>3.8.1</version>
		<scope>test</scope>
	</dependency>
</dependencies>
package com.blu.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class HelloServlet extends HttpServlet {
    
    

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    
    
		response.setContentType("text/html");
		//java默认的字符编码是ISO-8859-1,中文会乱码!
		response.setCharacterEncoding("utf-8");
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<title>Hello BLU!</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>你好 BLU!</h1>");
		out.println("</body>");
		out.println("</html>");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
		super.doPost(req, resp);
	}

}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
  
  <servlet>
  	<servlet-name>helloServlet</servlet-name>
  	<servlet-class>com.blu.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>helloServlet</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
</web-app>

在webapp目录下创建header.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>标题1</h1>
<p>Hi,BLU!</p>
</body>
</html>

启动

请求 http://localhost:8080/javawebdemo,访问的是webapp目录下默认创建的 index.jsp
请求 http://localhost:8080/javawebdemo/header.html 可访问到我们创建的 header.html
请求 http://localhost:8080/javawebdemo/hello 可访问到我们编写的Servlet

在这里插入图片描述

Servlet

Servlet是sun公司开发动态web的一门技术,它是一个接口
如果你想开发一个Servlet程序,只需以下两步:

  • 编写一个类,实现 Servlet 接口
  • 将开发好的 java 类部署到web服务器中

在这里插入图片描述

ServletContext

ServletContext 对象代表当前的Web应用,可用于 Servlet 间的数据共享通信

  • AServlet:ServletContext 中设置值
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    
    
	
	response.setContentType("text/html");
	response.setCharacterEncoding("utf-8");
	ServletContext servletContext = this.getServletContext();
	servletContext.setAttribute("username", "BLU");
		
}
  • BServlet:ServletContext 中取值
@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
		
	resp.setContentType("text/html");
	resp.setCharacterEncoding("utf-8");
	
	ServletContext servletContext = this.getServletContext();
	String username = (String) servletContext.getAttribute("username");
	resp.getWriter().print("名字:"+username);
}

注意:需要先请求AServlet给username赋值,然后请求BServlet才能获得值,否则值为空。


ServletContext 的应用——设置web初始化参数:

<context-param>
	<param-name>url</param-name>
	<param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
	ServletContext servletContext = this.getServletContext();
	String url = servletContext.getInitParameter("url");
	System.out.println(url);
}

ServletContext 的应用——实现请求转发:

  • AServlet:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
	System.out.println("进入AServlet");
	ServletContext servletContext = this.getServletContext();
	RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/b");
	requestDispatcher.forward(req, resp);
}
  • BServlet:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
	System.out.println("进入BServlet");
	resp.setContentType("text/html");
	resp.setCharacterEncoding("utf-8");
	PrintWriter out = resp.getWriter();
	out.println("Welcome to BServlet");	
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BLU_111/article/details/108643025