servlet配置多个路径访问,包括注解和xml,javaweb之过滤器,
时间:2021-08-11
本文章向大家介绍servlet配置多个路径访问,包括注解和xml,javaweb之过滤器,,主要包括servlet配置多个路径访问,包括注解和xml,javaweb之过滤器,使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
过滤器
1.处理中文乱码
-
xml配置实现
-
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"> <!--注册过滤器--> <filter> <filter-name>CharacterEncodingFilte</filter-name> <filter-class>com.ding.filter.CharacterEncodingFilte</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilte</filter-name> <!--只要是/servlet下的所有请求,都会走这个过滤器--> <url-pattern>/servlet/*</url-pattern> </filter-mapping> <servlet> <servlet-name>ShowServlet</servlet-name> <servlet-class>com.ding.servlet.ShowServlet</servlet-class> </servlet> <!--经过过滤器--> <servlet-mapping> <servlet-name>ShowServlet</servlet-name> <url-pattern>/servlet/show</url-pattern> </servlet-mapping> <!--不经过过滤器--> <servlet-mapping> <servlet-name>ShowServlet</servlet-name> <url-pattern>/show</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>shouye.jsp</welcome-file> </welcome-file-list> </web-app>
-
Filter
-
package com.ding.filter; import javax.servlet.*; import java.io.IOException; /** * @Description 过滤器处理乱码 * @Author 丁帅帅 * @Date 21/08/10 10:02 * @Version 1.0 */ public class CharacterEncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest Request, ServletResponse Response, FilterChain filterChain) throws IOException, ServletException { //处理中文乱码 Request.setCharacterEncoding("UTF-8"); Response.setCharacterEncoding("UTF-8"); Response.setContentType("text/html;charset=utf-8"); filterChain.doFilter(Request,Response); } @Override public void destroy() { } }
-
servlet
-
package com.ding.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @Description TODO * @Author 丁帅帅 * @Date 21/08/10 10:11 * @Version 1.0 */ public class ShowServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("你好 ,世界!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }
-
注解实现
-
Filter
-
package com.ding.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; /** * @Description 过滤器处理乱码 * @Author 丁帅帅 * @Date 21/08/10 10:02 * @Version 1.0 */ @WebFilter("/fun/*") public class CharacterEncodingFilter_2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest Request, ServletResponse Response, FilterChain filterChain) throws IOException, ServletException { //处理中文乱码 Request.setCharacterEncoding("UTF-8"); Response.setCharacterEncoding("UTF-8"); Response.setContentType("text/html;charset=utf-8"); filterChain.doFilter(Request,Response); } @Override public void destroy() { } }
-
package com.ding.servlet; 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; /** * @Description TODO * @Author 丁帅帅 * @Date 21/08/10 10:11 * @Version 1.0 */ @WebServlet(urlPatterns = {"/fun","/funn"}) public class ShowServlet_2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("你好 ,世界!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }
-
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>org.example</groupId> <artifactId>javaweb-filter</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <!-- servlet3.0规范的坐标 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--jsp坐标--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!-- JSTL表达式的依赖 --> <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- standard标签库 --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- 数据库 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> </dependencies> <!--构建--> <build> <!--设置插件--> <plugins> <!--具体的插件配置--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
2.验证用户登录
用户登录之后才能进入主页!用户注销后就不能进入主页了!
-
login
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <h1>登录</h1> <form action="/servlet/login"> <input type="text" name="username"> <input type="submit"> </form> </body> </html>
-
error
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>error</title> </head> <body> <h1>错误</h1> <h3>没有权限,或用户名错误</h3> <a href="/login.jsp">返回登录页面</a> </body> </html>
-
success
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>主页</h1> <p> <a href="/servlet/logout">注销</a> </p> </body> </html>
-
LoginFilter
-
package com.ding.filter; import com.ding.util.Constant; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @Description TODO * @Author 丁帅帅 * @Date 21/08/11 00:14 * @Version 1.0 */ @WebFilter("/sys/*") public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; //如果没有登录,则重定向到错误页面 Object userSession = request.getSession().getAttribute(Constant.USER_SESSION); if (userSession == null) { response.sendRedirect("/error.jsp"); } chain.doFilter(req, resp); } @Override public void destroy() { } }
-
LoginServlet
-
package com.ding.servlet; import com.ding.util.Constant; 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; /** * @Description TODO * @Author 丁帅帅 * @Date 21/08/10 23:50 * @Version 1.0 */ @WebServlet("/servlet/login") public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取前端请求的参数 String username = req.getParameter("username"); if (username.equals("admin")) { //登录成功,保存sessionId到session中 req.getSession().setAttribute(Constant.USER_SESSION, req.getSession().getId()); //重定向到成功页面 resp.sendRedirect("/sys/success.jsp"); } else { //登录失败,重定向到错误页面 resp.sendRedirect("/error.jsp"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
-
Logout
-
package com.ding.servlet; import com.ding.util.Constant; 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; /** * @Description TODO * @Author 丁帅帅 * @Date 21/08/11 00:18 * @Version 1.0 */ @WebServlet("/servlet/logout") public class LogoutServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Object userSession = req.getSession().getAttribute(Constant.USER_SESSION); if (userSession != null) { //注销登录 req.getSession().removeAttribute(Constant.USER_SESSION); //重定向回登录页面 resp.sendRedirect("/login.jsp"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
-
util
-
package com.ding.util; /** * @Description 常量单独放到一个类中,容易后期更改 * @Author 丁帅帅 * @Date 21/08/11 00:19 * @Version 1.0 */ public class Constant { private Constant() { } public static final String USER_SESSION = "USER_SESSION"; }
世界不会因为你的疲惫,而停下它的脚步
原文地址:https://www.cnblogs.com/dss-99/p/15127307.html
- React Native之ViewPagerAndroid 组件
- 《笨办法学Python》 第5课手记
- psRobot:植物小RNA分析系统
- 《笨办法学Python》 第3课手记
- NGS基础 - 参考基因组和基因注释文件
- 关于Android PullTorefreshScrollview回到顶部实例
- 《笨办法学Python》 第2课手记
- 《笨办法学Python》 第1课手记
- 《笨办法学Python》 第40课手记
- 很经典的GDB调试命令,包括查看变量,查看内存
- 《笨办法学Python》 第39课手记
- 《笨办法学Python》 第38课手记
- 01背包及其变种(物品无限背包、恰好装满背包)
- 《笨办法学Python》 第35课手记
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- XSS 攻击详解,为什么建议 Cookie 加上 HttpOnly 属性?
- 个性化调整坐标轴的颜色和位置
- matplotlib实现一页多图
- 用matplotlib实现画中画
- 为matplotlib设置不同的主题
- 模式利器 | MEIC污染源清单向WRF-Chem模式网格插值分配工具——meic2wrf
- Windows给力!可以扔掉Linux虚拟机了!
- 好慌,Redis这么多集群方案,要用哪种?
- 你真的了解MySQL 8.0 数据字典吗?
- 《调教命令行09》磁盘很廉价,放小电影最合适了
- 既保护隐私又快速训练,Facebook开源Opacus库,利用差分隐私训练PyTorch模型
- 为什么Java中1000==1000为false而100==100为true?
- Java自动化测试 (元素定位 23)
- Java自动化测试(webdriver常用API 24)
- Java自动化测试(特殊元素处理 25)