想要学习javaee 需要从servlet开始,博主近期会持续更新
servlet
创建一个maven项目
- 使用工具idea(2021.1)
- 编码格式utf-8
setting 中的file encoding 和java compiler
- idea 2021.1 为避免控制台乱码解决方式
help-> edit custom vm…添加-Dfile.encoding=UTF-8
设置完这里就不会有乱码了,tomcat 也不需要进行设置了
- 设置tomcat环境变量
非关键步骤,不设置也行,不影响
- 绑定tomcat
idea 选择 tomcat local 指定tomcat路径即可
- 在main文件夹下面创建webapp
- 在webapp下面创建index.jsp
- 在webapp下面床架WEB-INF
- 在WEB-INF下面创建web.xml
相关代码在如下展示
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bai.frame</groupId>
<artifactId>init_fram_sevlet</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
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_3_1.xsd"
version="3.1"
metadata-complete="true">
<display-name>Welcome to servlet</display-name>
<welcome-file-list>
<welcome-file>view/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello servlet</title>
</head>
<body>
hello servlet123
</body>
</html>
整个工程结构
运行展示结果
创建servlet
-
添加servlet
project settings > modules > Dependenices 添加tomcat依赖
-
继承HttpServlet 具体使用,重写父类的方法
-
web.xml中进行标签配置
代码
public class MainServlet extends HttpServlet { Logger log = Logger.getLogger(MainServlet.class); //创建路由 Router router = new Router(); @Override public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { log.info("MainServlet " + req.getServletPath()); String path = req.getServletPath(); if(StringUtils.isBlank(path) || path.indexOf(".") == -1){ router.index(req,res); return; } String routerName = path.substring(1,path.lastIndexOf(".")); switch(routerName){ case "login": router.login(req,res); break; case "home": router.home(req,res); break; case "main": router.checkUser(req,res); break; case "logout": router.logout(req,res); break; default: router.index(req,res); } } @Override public void destroy() { log.info(" MainServlet 开始销毁" ); } @Override public void init() throws ServletException { log.info(" MinServlet 开始初始化" ); } }
<servlet> <servlet-name>main</servlet-name> <servlet-class>com.frame.main.MainServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
以上就是servlet的创建和使用,具体的业务要根据自己的业务进行处理
session 处理
-
配置session时间
<session-config> <session-timeout>30</session-timeout><!--单位是分钟,也在在代码中设置--> </session-config>
-
创建session 并存入对象
HttpSession session = req.getSession(true);//true如果没有session 创建一个新的session session.setAttribute("user",user); SessionUtil.setCookie(session.getId(),response);//这个地方是设置cookie,实现看下面
public static void setCookie(String sessionId, HttpServletResponse response){ Cookie cookie = new Cookie("serframemm",sessionId); response.addCookie(cookie); }
-
判断session 是否有效
//当没有session 或者过期 if(session == null || session.getAttribute("user") == null){ String path = request.getServletPath(); if(path.indexOf("home.jsp") > -1 || path.indexOf("home.do") > -1){ ((HttpServletResponse)servletResponse).sendRedirect("view/login.jsp");//不符合进行登录处理 return; } }
-
销毁session
HttpSession session = req.getSession(false); session.invalidate();
-