会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
JAVA 全系列/第五阶段:JavaWeb开发/计算机网络协议详解 136楼

老师,这是我对servlet的一些理解,麻烦您帮我看下理解的对错。

        在这个视频中,idea通过Tomcat下的catalina.sh,创建了该项目的副本Tomcatimage.png

        在副本Tomcat下,有localhost的host配置项。

image.png

        用户通过网址http://localhost/demo

网址申请访问的时候,连接器会将请求发送到副本Tomcat的engine,engine此时通过解析域名,去找localhost的主机host,找到了副本Tomcat下conf里的配置项

        通过配置里的Context信息

image.png

        链接访问到已经编译好的文件夹

image.png

        在该文件夹下,有配置好的web.xml信息,信息指明了servlet类所在的位置已经访问的网址

image.png

        web服务器先拿网址后半部分与这里的url-pattern进行比对,如对上了,顺着对应类的路径servlet-class找到已编译完成的类文件,完成实例化。

JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 137楼

image.png

JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 138楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 139楼


JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 140楼

为什么我的tomcat重启以后,自动登录的界面没有   不登录不好使   这句话

package com.bjsxt.web.filter;

import com.bjsxt.commons.Constants;
import com.bjsxt.pojo.Users;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@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();
        if(uri.indexOf("login.jsp")!=-1 || uri.indexOf("login.do")!=-1 ){
            filterChain.doFilter(servletRequest, servletResponse);
        }else {
            HttpSession session=request.getSession();
            Users users  = (Users) session.getAttribute(Constants.USER_SESSION_KEY);
            if(users!=null){
                filterChain.doFilter(servletRequest, servletResponse);
            }else {
                request.setAttribute(Constants.REQUEST_MSG,"不登录不好使");
                request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse);
            }
        }
    }

    @Override
    public void destroy() {

    }
}


JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 141楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 142楼

老师,我把一个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技术详解(旧) 143楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 144楼

new java project.zip

老师,我也碰到和大多数同学一样的问题了,输入正确的账号密码登录不上去,代码全部重新再敲过一遍也是一样的情况显示用户或密码有误,麻烦帮忙检查一下,我个人感觉是数据库这边出的问题,按着网上搜的方法试好像也解决不了


JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 146楼
JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 147楼

servletdemo1.rar

老师,你看看这个CookieServlet这个,我运行是有问题的


JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解 148楼

image.png

JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 149楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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