Tomcat目录结构:
本机ip地址:
启动时可能遇到的问题:
Servlet入门:
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">
<servlet>
<servlet-name>test_1</servlet-name>
<servlet-class>Servlet_java.test_1</servlet-class>
//使用接口类的完整路径
</servlet>
<servlet-mapping>
<servlet-name>test_1</servlet-name>
<url-pattern>/test_1</url-pattern>
</servlet-mapping>
</web-app>
实现类:
package Servlet_java;
import javax.servlet.*;
import java.io.IOException;
public class test_1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//提高服务的方法
System.out.println("hello world");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
@WebServlet("/test_HttpServlet")
//浏览器中要访问的路径,也就是说,这个是什么,浏览器域名访问时,这个文件的名称就是这个,而不是类名
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test_HttpServlet")
//浏览器中要访问的路径,也就是说,这个是什么,浏览器域名访问时,这个文件的名称就是这个,而不是类名
public class test_HttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet.......");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost.......");
}
}
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test_Request")
public class test_Request extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getMethod();
//获取请求方式
System.out.println(method);
String contextPath = request.getContextPath();
//获取虚拟目录
System.out.println(contextPath);
String servletPath = request.getServletPath();
//获取Servlet路径
System.out.println(servletPath);
String queryString = request.getQueryString();
//获取get方式请求参数
System.out.println(queryString);
StringBuffer requestURL = request.getRequestURL();
//获取请求URL
System.out.println(requestURL);
String requestURI = request.getRequestURI();
//获取请求URI
System.out.println(requestURI);
String protocol = request.getProtocol();
//获取协议及版本
System.out.println(protocol);
String remoteAddr = request.getRemoteAddr();
//获取客户机的ip地址
System.out.println(remoteAddr);
}
}
运行结果:
GET
/Java_Servelt_war_exploded
/test_Request
null
http://localhost:8080/Java_Servelt_war_exploded/test_Request
/Java_Servelt_war_exploded/test_Request
HTTP/1.1
0:0:0:0:0:0:0:1
应用场景:可以解决盗版网站盗取正版网站资源链接的问题
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
@WebServlet( "/test_request_4")
public class test_request_4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String referer = request.getHeader("referer");
//获取访问的路径
System.out.println(referer);
if(referer != null){
if(referer.contains("Java_Servelt_war_exploded")){
//判断是否是由正确的路径而来,只要包含字符串路径就可以
response.setContentType("text/html;charset=utf-8");
//将文字直接打印在页面上
response.getWriter().write("播放资源");
}else {
response.setContentType("text/html;charset=utf-8");
//将文字直接打印在页面上
response.getWriter().write("请去官网。。。。。");
}
}
}
}
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
@WebServlet( "/test_request_5")
public class test_request_5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
//获取请求消息体,即请求参数
String line = null;
while ((line=reader.readLine())!=null){
System.out.println(line);
}
}
}
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
@WebServlet( "/test_request_6")
public class test_request_6 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置流的编码
request.setCharacterEncoding("utf-8");
//根据参数名称获取参数值
String password = request.getParameter("password");
System.out.println("post");
System.out.println(password);
System.out.println("---------------------------------");
Map<String, String[]> parameterMap = request.getParameterMap();
//获取参数的键值对
Set<String> strings = parameterMap.keySet();
//获取所有的键
for(String name : strings){
String[] values = parameterMap.get(name);
//通过键,获取所有的值
System.out.println(name);
for(String value: values){
//遍历所有的值
System.out.println(value);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//根据参数名称获取参数值
this.doPost(request,response);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/Java_Servelt_war_exploded/test_request_6" method="get">
<!-- 使用test_request_5类中的方法,与method的参数有关,post则是使用doPost方法-->
<input type="text" name="username" placeholder="请输入用户名"><br>
<input type="text" name="password" placeholder="请输入密码"><br>
<input type="checkbox" name="hobby" value="game">游戏
<input type="checkbox" name="hobby" value="study">学习<br>
<input type="submit" value="注册">
</form>
</body>
</html>
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet( "/test_request_8")
public class test_request_8 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("8.........");
request.getRequestDispatcher("/test_request_9").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//根据参数名称获取参数值
this.doPost(request,response);
}
}
package demo1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet( "/test_request_8")
public class test_request_8 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//将msg键值对存储到request域中
request.setAttribute("msg","hello");
System.out.println("8.........");
request.getRequestDispatcher("/test_request_9").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
package demo1;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet( "/test_request_10")
public class test_request_10 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = request.getServletContext();
System.out.println(servletContext); //org.apache.catalina.core.ApplicationContextFacade@67b89a4d
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}