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

老师,请教一下,我获取的 servletConfig对象是倒序的,帮忙看看哪里的问题?


Java源码:

package com.gdyj.demo;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;

   /* public void init() {
        message = "Hello World!";
    }*/

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    //    getRequestInfo(request, response);
    //    getRequestAllKeys(request, response);
    //    this.getServletInfomation(request, response);

    //    this.getWebInformation(request, response);
        this.getServletConfigInformation(request,response);

    }


    void getServletConfigInformation(HttpServletRequest request, HttpServletResponse response) throws IOException {
        ServletConfig servletConfig = this.getServletConfig();
        Enumeration<String> initParamNames =  servletConfig.getInitParameterNames();

     /*   List<String> list = new ArrayList<>();

        while(initParamNames.hasMoreElements()) {
            list.add(initParamNames.nextElement());
        }*/

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>");
        out.println("<html><HEAD><TITLE>jacymin</TITLE></HEAD><body>");


    /*    out.println("list: " + list + "<br/>");
        out.println("<br/>");*/

        while(initParamNames.hasMoreElements()) {
            String str = initParamNames.nextElement();
            out.println("key: " + str);
            out.println(", value: " + servletConfig.getInitParameter(str) + "<br/>");
        }

        out.println("<br/>");
        out.println("<br/>");
        out.println("<br/>");
        out.println("end!!!<br/>");

        out.println("</body></html>");

        out.flush();
        out.close();
    }
}



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">

    <context-param>
        <param-name>key1</param-name>
        <param-value>value01</param-value>
    </context-param>

    <context-param>
        <param-name>key2</param-name>
        <param-value>value02</param-value>
    </context-param>

    <servlet>
        <servlet-name>demoServlet</servlet-name>
        <servlet-class>com.gdyj.demo.HelloServlet</servlet-class>
        <init-param>
            <param-name>key001</param-name>
            <param-value>value001</param-value>
        </init-param>
        <init-param>
            <param-name>key002</param-name>
            <param-value>value002</param-value>
        </init-param>
        <init-param>
            <param-name>key003</param-name>
            <param-value>value003</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>demoServlet</servlet-name>
        <url-pattern>/demo.do</url-pattern>
    </servlet-mapping>

</web-app>






搜狗浏览器输出结果:

image.png




换了 Chrome 浏览器,也是一样的:

image.png

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

老师,请问为什么我的页面一直加载不出来? 我用的是macOS。



index.html

在这个路径下面。

/Users/kevinlu/Desktop/JAVA_Lesson/5_JavaEE/3_Servlet


server.xml:

部分代码,最后三行是我修改的,全部可以看附件。

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
	  
<Host name="www.itbz.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/itbz" docBase="/Users/kevinlu/Desktop/JAVA_Lesson/5_JavaEE/3_Servlet"/>
</Host>


修改Host文件:

terminal -> sudo nano /private/etc/hosts

image.png

访问页面:

Tomcat启动成功,可以通过localhost:8888访问到主页面

但是访问

Archive.zip

www.itbz.com:8888/itbz/index.html 这个地址就不成功,界面是空的

image.png

JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 722楼
JAVA 全系列/第五阶段:JavaWeb开发/XML技术(旧) 723楼
JAVA 全系列/第五阶段:JavaWeb开发/Ajax技术详解(旧) 724楼

<%--
  Created by IntelliJ IDEA.
  User: Je'f'f
  Date: 2021/9/2
  Time: 14:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
    <script>
        function but(){
            var xhr = new XMLHttpRequest();
            xhr.open("get","single.do");
            xhr.send();
            xhr.onreadystatechange = function(){

                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    //通过javaScript的内置对象JSON中的parse函数将JSON格式的字符串对转换成javascript对象
                    var obj = JSON.parse(xhr.responseText);
                    alert(obj.userid+" "+obj.username);
                    document.getElementById("span").innerHTML=obj.userid+"<br/>"+obj.username;
                }
            }
        }
    </script>
</head>
<body>
<h3>JSON格式的单个响应</h3>
<hr>
<sapn id="span"> </sapn>
<input type="button" value="ok" onclick="but()"/>
</body>
</html>

jsp代码

package pojo;

public class Users {
    private int userid;
    private String username;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

Users类

package com.servlet;

import com.fasterxml.jackson.databind.ObjectMapper;
import pojo.Users;

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;
import java.io.PrintWriter;

@WebServlet("/single.do")
public class SingleObjectServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Users users = new Users();
        users.setUserid(1);
        users.setUsername("tutu");
        //使用jackson的API转化为JSON对象
        ObjectMapper objectMapper = new ObjectMapper();
        //将Users对象转换为JSON格式的字符对象
        String string = objectMapper.writeValueAsString(users);
        System.out.println(string);
        //设置相应类型为application/json
        resp.setContentType("application/json");
        PrintWriter pw = resp.getWriter();
        pw.print(string);
        pw.flush();
        pw.close();
    }
}
SingleObjectServlet

image.png

运行结果,点击OK无反应。请问是什么问题,找半天找不出来。

image.png

F12看了是这个

JAVA 全系列/第五阶段:JavaWeb开发/Ajax技术详解(旧) 725楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 730楼
JAVA 全系列/第五阶段:JavaWeb开发/Ajax技术详解(旧) 732楼
JAVA 全系列/第五阶段:JavaWeb开发/JSP技术详解(旧) 733楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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