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");	
}

在这里插入图片描述
ServletContext 的应用——读取资源:

  • 在src/main/resources目录下创建db.properties文件:
username=root
password=123456
  • 在Servlet中读取配置文件
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	//InputStream is = this.getClass().getClassLoader().getResourceAsStream("db.properties");
	InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
	Properties prop = new Properties();
	prop.load (is);
	String username = prop.getProperty("username");
	String password = prop.getProperty("password");
	System.out.println(username);
	System.out.println(password);	
}

servletConfig

<servlet>
	<servlet-name>AServlet</servlet-name>
	<servlet-class>com.blu.servlet.AServlet</servlet-class>
	<init-param>
		<param-name>ip</param-name>
		<param-value>127.0.0.1</param-value>
	</init-param>
</servlet>
<servlet-mapping>
	<servlet-name>AServlet</servlet-name>
	<url-pattern>/a</url-pattern>
</servlet-mapping>
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	System.out.println("进入AServlet");
	ServletConfig servletConfig = this.getServletConfig();
	System.out.println(servletConfig.getInitParameter("ip"));
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值