Servlet是由Web服务器调用,web服务器在收到浏览器请求之后
<servlet-mapping>
<servlet-name>helloservlet-name>
<url-pattern>/hellourl-pattern>
servlet-mapping>
查看
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhaourl-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhao1url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhao2url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhao3url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhao4url-pattern>
servlet-mapping>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhao5url-pattern>
servlet-mapping>
查看
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/*url-pattern>
servlet-mapping>
查看
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>*.xzurl-pattern>
servlet-mapping>
查看
<servlet>
<servlet-name>helloxiaozhaoservlet-name>
<servlet-class>com.xz.servlet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>helloxiaozhaoservlet-name>
<url-pattern>/helloxiaozhaourl-pattern>
servlet-mapping>
<servlet>
<servlet-name>errorservlet-name>
<servlet-class>com.xz.servlet.ErrorServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>errorservlet-name>
<url-pattern>/*url-pattern>
servlet-mapping>
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求
查看
默认处理请求(自定义404)
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。
我在这个Servlet中保存的数据,可以在另一个servlet中拿到
package com.xz.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author 小龚
* @create 2022-08-30 18:11
*/
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//this.getInitParameter()初始化参数
//this.getServletConfig()Servlet配置
//this.getServletContext()Servlet上下文
ServletContext context = this.getServletContext();
String username = "小赵";//数据
context.setAttribute("username",username);//将一个数据保存在了ServletContext中,名字为username,值为username(object)
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
out.print("已存放用户名");
}
获取数据的Servlet
package com.xz.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author 小龚
* @create 2022-08-30 22:11
*/
public class GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String username = (String) context.getAttribute("username");//需要强转
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("用户名:"+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
查看
ServletDemo03
package com.xz.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author 小龚
* @create 2022-08-30 22:50
*/
public class ServletDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String url = context.getInitParameter("url");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print(url);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
web.xml配置
<context-param>
<param-name>urlparam-name>
<param-value>jdbc:mysql//localhost:3306/mybatisparam-value>
context-param>
<servlet>
<servlet-name>gpservlet-name>
<servlet-class>com.xz.servlet.ServletDemo03servlet-class>
servlet>
<servlet-mapping>
<servlet-name>gpservlet-name>
<url-pattern>/gpurl-pattern>
servlet-mapping>
测试
ServletDemo04
package com.xz.servlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author 小龚
* @create 2022-08-30 23:18
*/
public class ServletDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
//请求转发
//RequestDispatcher rc = context.getRequestDispatcher("/gp");//转发的请求路径
//rc.forward(req,resp);//调用forward方法实现请求转发
//以上两句合并成一句
context.getRequestDispatcher("/gp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web.xml
<servlet>
<servlet-name>sd4servlet-name>
<servlet-class>com.xz.servlet.ServletDemo04servlet-class>
servlet>
<servlet-mapping>
<servlet-name>sd4servlet-name>
<url-pattern>/sd4url-pattern>
servlet-mapping>
测试
路径没有变化
Properties类
发现:都被打包到了同一个路径下:classes,我们俗称这个路径为classPath
读取配置文件
ServletDemo05
package com.xz.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author 小龚
* @create 2022-08-30 23:55
*/
public class ServletDemo05 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties pp= new Properties();
pp.load(is);
String username = pp.getProperty("username");
String password = pp.getProperty("password");
resp.setContentType("text/html");
resp.getWriter().print(username+";"+password);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
db.properties
username=root
password=123456
web.xml
<servlet>
<servlet-name>sd5servlet-name>
<servlet-class>com.xz.servlet.ServletDemo05servlet-class>
servlet>
<servlet-mapping>
<servlet-name>sd5servlet-name>
<url-pattern>/sd5url-pattern>
servlet-mapping>
测试