拦截器 登录login实例

当请求来的时候,首先经过拦截器,在经过一系列拦截器处理后,再由再根据URL找到Servlet.执行servlet中的代码.

首先建一个dynamic web project

然后在WebContent或webroot文件夹下面的WEB-INF文件夹下面再建两个文件夹classes和lib.

classes文件夹用来存放加载的字节码文件,lib文件夹用于存放jar包

接下来在WEB-INF目录下新建一个web.xml文件,用于配置拦截器信息和servlet.

然后处理请求页面,可以建一个文件夹专门存放.jsp文件或者.html文件

下面看登录信息字符串解码的程序:

建一个Filter的类,该类实现了Filter接口:

 1 package test.filter;
 2 import java.io.IOException;
 3 import javax.servlet.Filter;
 4 import javax.servlet.FilterChain;
 5 import javax.servlet.FilterConfig;
 6 import javax.servlet.ServletException;
 7 import javax.servlet.ServletRequest;
 8 import javax.servlet.ServletResponse;
 9 public class CharFilter implements Filter {
10     /**
11      * 加载配置的方法
12      */
13     public void init(FilterConfig config) throws ServletException {
14         System.out.println("CharFilter.init()");
15     }
16     /**
17      * 执行拦截的方法
18      */
19     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
20             throws IOException, ServletException {
21         // 将请求到的数据转化为UTF-8 将服务器输入到jsp的汉字进行转码
22         response.setContentType("text/html; charset=utf-8");
23         // 将form表单中的内容提交给服务器时进行解码
24          request.setCharacterEncoding("utf-8");
25         // 将拦截后处理过的内容转发给下一个filter
26         chain.doFilter(request, response);
27     }
28     /**
29      * 销毁拦截器
30      */
31     public void destroy() {
32     }
33 }

下来在进行servlet中处理业务逻辑:

代码如下:

package test.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.servlet.http.HttpSession;
@WebServlet("/hello")
public class CharServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;
        protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
            String parameter = request.getParameter("username");//获取name参数
            String  pas = request.getParameter("pas");//获取password参数

            System.out.println(parameter+"密码:"+pas);
            if("huike".equals(parameter)&&"111".equals(pas)){
                request.getRequestDispatcher("/JSP/login.jsp").forward(request, response);
            }else{
                PrintWriter writer = response.getWriter();
                writer.write("账户或密码错误");
                writer.close();
            }

        }
}

登录界面的.jsp文件

<%@ page import="java.util.UUID" %>  <!-- 导入UUID的jar包 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>hello world!!你好</h1>
        <form action="/Charset/hello" method="POST">
                账户:<input type="text" name = "username"   placeholder ="hello world" required/><br/><br/>
        密码:<input type="password" name = "pas" /><br/><br/>
        <input type="submit" />
    </form>
</body>
</html>

跳转页面的.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
<h1>login</h1>
    ${name} <!-- 通过servlet中设置的键获取name的值 ,进行参数传递-->
    <a>你好</a>
</body>
</html>

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Charset</display-name>
      <filter>
          <filter-name>CharFilter</filter-name>
          <filter-class>test.filter.CharFilter</filter-class> //filter类的权限定名称
      </filter>
      <filter-mapping>
          <filter-name>CharFilter</filter-name>
          <url-pattern>/*</url-pattern>

      </filter-mapping>
</web-app>

访问URL:http://localhost:8080/工程名/放.jsp文件的文件夹名/XX.jsp,另:在WEB-INF下面的jsp文件不能直接访问到

时间: 2024-10-04 15:31:57

拦截器 登录login实例的相关文章

struts自定义拦截器--登录权限控制

说明:该自定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.总体的步骤: (1).定义拦截器类.LoginInterceptor(完成登录拦截) 方式1:实现com.opensymphony.xwork2.interceptor.Interceptor接口并覆写方法. 方式2:继承com.opensymphony.xwork2.interceptor.AbstractIntercep

Struts2拦截器原理以及实例

Struts2拦截器原理以及实例 一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. 拦截器栈(Interceptor Stack).Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链.在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用. 二.实现Struts2拦截器原理 Struts 2的拦截器实现相对

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

struts2学习(6)自定义拦截器-登录验证拦截器

需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.model.User.java: package com.cy.model; public class User { private String userName; private String password; public String getUserName() { return userNam

Struts拦截器登录权限验证(自用)

LoginAction:  自定义拦截器代码:  struts.xml 配置拦截器: 原文地址:https://www.cnblogs.com/MonkeyJava/p/10807392.html

Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interceptor连在一起组成了Interceptor栈.拦截器是AOP面向切面编程的一种实现,具有热插拔的效应. 3:Struts2拦截器,每个拦截器类只有一个对象实例,即采用了单利模式.所有引用这个拦截器的action都共享着一拦截器类的实例. 拦截器和过滤器的区别 1:拦截器和过滤器的概念非常类似 2:

struts2-权限拦截器、日志拦截器、execAndWait(进度条)拦截器配置

1.权限拦截器 package login; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class LoginI

拦截器的使用

穿越:从0开始,构建前后端分离应用 拦截器的作用 拦截器是web项目不可或缺的组成部分,一般使用拦截器实现以下功能 1.登录session验证 防止浏览器端绕过登录,直接进入到应用 或者session超时后,返回到登录页面 2.记录系统日志 一个完善的应用系统,应该具备监控功能,通过完善的系统日志记录系统运行过程中都经历了什么,当发生错误的时候及时通知管理人员,将损失降到最低.同时通过系统日志的监控,也能监控每次访问的响应时长,作为性能调优的参考 3.对请求进行前置或后置的操作 比如对于服务端返

SSH实现登陆拦截器

/** * 登录验证拦截器 * */ @SuppressWarnings("serial") public class LoginInteceptor implements Interceptor { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init() { // TODO Auto-generated method stub } /**每次