会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132846个问题

package WEB.web.filter;

import WEB.commons.Constants;
import WEB.pojo.User;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * 判断当前客户端浏览器是否登录的 Filter
 */
@WebFilter(urlPatterns = {"*.do","*.jsp"})
public class UserLoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String uri = request.getRequestURI();
        StringBuffer url = request.getRequestURL();
        System.out.println("---------------" + uri);
        System.out.println("---------------" + url);
        //判断当前请求的是否为login.jsp 或者login.do,如果请求的是用户登录的资源那么需要放行。
        if (uri.indexOf("login.do") != -1 || uri.indexOf("login.jsp") != -1){
            filterChain.doFilter(servletRequest, servletResponse);
        }else{
            //不在登录页面,要进行操作验证是否有该对象
            HttpSession session = request.getSession();
            User user = (User) session.getAttribute(Constants.USER_SESSION_KEY);
            //判断session中是否有该对象
            if (user != null){
                filterChain.doFilter(servletRequest, servletResponse);
            }else{
                //在客户端打印一句话
                request.setAttribute("mess","不登录不好使");
                //通过请求转发进行跳转
                request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse);
            }
        }
    }

    @Override
    public void destroy() {

    }
}

我直接去访问的main.jsp页面,但是没有打印不登录不好使这句话怎么回事

JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 664楼
JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 665楼
JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 666楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 667楼
JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 668楼

老师,我把一个input的name从‘userName’改成了‘学习’,然后再servlet中使用getParameter(“学习”)方法去获取值,但是为什么是获取的值是null,但是遍历的时候又出现了'userName'作为key?

image.png

package com.bjsxt.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.PrintWriter;
import java.util.*;

/**
 * 问题引入:请求的数据包基于字节在网络上传输,Tomcat 接收到请求的数据包后会将数据包中的
 *      字节转换为字符。在 Tomcat 中使用的是 ISO-8859-1 的单字节编码完成字节与字符的转换,
 *      所以数据中含有中文就会出现乱码;
 * 解决方式一:
 *      String xx=new String(xx.getBytes("iso-8859-1"),"utf-8")
 * 解决方式二:
 *       req.setCharacterEncoding("utf-8")
 *
 * @author 小羊
 */
public class C_CharacterSet3 extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //方式二:
        req.setCharacterEncoding("utf-8");
        String userName = req.getParameter("学习");
        //方式一:
      //  String s1 = new String(userName.getBytes("iso-8859-1"), "utf-8");
        System.out.println(userName);
        String pwd = req.getParameter("pwd");

        String[] favors = req.getParameterValues("favor");
        List<String> strings = Arrays.asList(favors);

        Enumeration<String> parameterNames = req.getParameterNames();
        ArrayList<String> arr = new ArrayList<>();
        while (parameterNames.hasMoreElements()){
            String s = parameterNames.nextElement();
            arr.add(s);
        }
        Map<String, String[]> pm = req.getParameterMap();
        PrintWriter out = resp.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("UserName:  "+userName+"<br/>");
        out.println("Password:  "+pwd+"<br/>");
        out.println("favor:  "+strings+"<br/>");
        out.println("Keys :  "+arr +"<br/>");

        Iterator<Map.Entry<String, String[]>> iterator = pm.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String, String[]> next = iterator.next();
            out.println("Keys :  "+next.getKey()+"  "+"Values"+ Arrays.asList(next.getValue()) +"<br/>");
        }
        out.println("</BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}



    
    Title


JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 669楼
JAVA 全系列/第五阶段:JavaWeb开发/JSP技术详解(旧) 670楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 674楼
JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 675楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637