Cuatro aplicaciones principales de servletContext
1.
ServletContext de datos compartidos se comparte globalmente, ServletContext context = this.getServletContext ();
Básicamente no se usa en el desarrollo real, solo entiéndalo
2. Lea la configuración del parámetro de inicialización en web.xml, etc.
<!-- 配置初始化参数-->
<context-param>
<param-name>url</param-name>
<param-value>jdbc.mysql://localhost:3306/mybatis</param-value>
</context-param>
public class ServletDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取web.xml中配置的初始化参数
ServletContext context = this.getServletContext();
String url = context.getInitParameter("url");
System.out.println(url);
}
}
3. Reenvío de solicitudes: tenga en cuenta que el reenvío es diferente de la redirección de respuestas, la ruta no cambiará
public class ServletDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 请求转发
ServletContext context = this.getServletContext();
// 映射中的s5路径转发到/s3路径 转发路劲不变化 不同于重定向
context.getRequestDispatcher("/s3").forward(req,resp);
}
}
4. Coopere con la clase Propiedades para obtener información del archivo de configuración.
Para
ejecutar el archivo de configuración de Xinjiang en los archivos de recursos estáticos o java, el archivo de configuración correspondiente se generará en la carpeta de destino después de la ejecución final. Necesitamos usar esta ruta relativa '/ WEB-INF / classes / dp.properties' para leer la información
public class ServletDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 使用properties来读取配置文件
InputStream rs = this.getServletContext().getResourceAsStream("/WEB-INF/classes/dp.properties");
Properties prop = new Properties();
prop.load(rs);
String user = prop.getProperty("user");
String pwd = prop.getProperty("pwd");
resp.getWriter().print(user+";"+pwd);
}
}
Redireccionamiento de la aplicación de respuesta
Redirigir el análisis del código fuente solo necesita dos oraciones
public class redirectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
* 重定向等价代码
* resp.setHeader("location","/s6");
* resp.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
* */
resp.sendRedirect("/s6");
}
Galleta
public class CookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
// 获取cookie对象
Cookie[] cookies = req.getCookies();
PrintWriter out = resp.getWriter();
if(cookies!=null){
out.write("你上一次登录浏览器时间是:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals("lastLoginTime")){
Long lastLoginTime = Long.parseLong(cookie.getValue());
Date date = new Date(lastLoginTime);
System.out.println(date.toLocaleString());
}
}
}else {
out.write("这是你第一次登陆浏览器");
}
// 服务端存入一个cookie
Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
resp.addCookie(cookie);
}
}
sesión
Crear objeto de sesión y guardar contenido relevante
public class sessionDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.解决编码问题
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
// 2.获取session对象
HttpSession session = req.getSession();
session.setAttribute("name","java工程师");
session.setAttribute("student",new Student("黄杰",20));
String id =session.getId();
if(session.isNew()){
resp.getWriter().write("第一次");
}else {
resp.getWriter().write("sessionID是"+id);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Cree una nueva clase y comparta la sesión globalmente. Puede obtener el contenido directamente a través del objeto de sesión devuelto por req.getSession ().
Preste atención a los dos tipos de parámetros de session.setAttribute (String, Object)
cuando llame a session.getAttribute ( String) Información para convertir en consecuencia;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.解决编码问题
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
// 2.获取session对象并获取内容
HttpSession session = req.getSession();
String name = (String) session.getAttribute("name");
Student s1 = (Student) session.getAttribute("student");
resp.getWriter().write("姓名是"+name);
System.out.println(s1.toString());
}
Cerrar sesión
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
// 注销session
session.removeAttribute("name"); //常用
// session.invalidate();
}
Resuelva el problema de la exportación fallida de recursos xml por Maven
Configure el siguiente bloque de código en porm.xml
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>