Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解析为类型_Java_Jsp_Http Authentication - Fatal编程技术网

Java 无法解析为类型

Java 无法解析为类型,java,jsp,http-authentication,Java,Jsp,Http Authentication,我试图在JSP代码中使用HTTP身份验证。但我在MyAuthenticator上遇到错误,无法解析为类型。sytax对于我在jsp页面中编写的代码是否正确。如有任何建议,我们将不胜感激 <%@ page language="java" import="java.net.Authenticator,java.net.PasswordAuthentication,java.io.BufferedReader,java.net.*,java.io.*" contentType="text

我试图在JSP代码中使用HTTP身份验证。但我在MyAuthenticator上遇到错误,无法解析为类型。sytax对于我在jsp页面中编写的代码是否正确。如有任何建议,我们将不胜感激

    <%@ page language="java" import="java.net.Authenticator,java.net.PasswordAuthentication,java.io.BufferedReader,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%

String urlToQuery = request.getParameter("url");
System.out.println(" " +urlToQuery);
//URL url = new URL(urlToQuery);



//InputStream in = conn.getInputStream();

String urlString = "";
String username = "";
String password = "";
Authenticator.setDefault(new MyAuthenticator(username, password));
URL url = new URL(urlToQuery);
URLConnection conn = url.openConnection();
InputStream content = (InputStream) url.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = in.readLine()) != null) {
  System.out.println(line);
}
System.out.println("Done.");

 class MyAuthenticator extends Authenticator {
    private String username, password;

    public MyAuthenticator(String user, String pass) {
      username = user;
      password = pass;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
      System.out.println("Requesting Host  : " + getRequestingHost());
      System.out.println("Requesting Port  : " + getRequestingPort());
      System.out.println("Requesting Prompt : " + getRequestingPrompt());
      System.out.println("Requesting Protocol: " + getRequestingProtocol());
      System.out.println("Requesting Scheme : " + getRequestingScheme());
      System.out.println("Requesting Site  : " + getRequestingSite());
      return new PasswordAuthentication(username, password.toCharArray());
    }
  }



%>

<%=line %>

不要在JSP中定义内部类。考虑JSP就像一个简单的方法。< /P> JSP类似于(1):

应将内部类定义为一个唯一的内部类:

 Authenticator.setDefault(new Authenticator() {
   protected getPasswordAuthentication() {
     System.out.println("Requesting Host  : " + getRequestingHost());
     System.out.println("Requesting Port  : " + getRequestingPort());
     ...
   }
 });
我不确定如何传递参数(我只使用了最简单的匿名内部类)

无论如何,对于将从外部方法使用的任何内容,我将使用一个公共类(在它自己的文件中)并避免所有这些问题

(1) 不完全是这样,但您明白了。

引导JSP将代码内容视为语句。因此,类成为一个局部类,遵循与局部变量相同的范围规则(即,必须在使用该类之前声明该类)。我没有测试它,但如果您将代码重写为:

    <%@ page language="java" import="java.net.Authenticator,java.net.PasswordAuthentication,java.io.BufferedReader,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%

class MyAuthenticator extends Authenticator {
    private String username, password;

    public MyAuthenticator(String user, String pass) {
      username = user;
      password = pass;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
      System.out.println("Requesting Host  : " + getRequestingHost());
      System.out.println("Requesting Port  : " + getRequestingPort());
      System.out.println("Requesting Prompt : " + getRequestingPrompt());
      System.out.println("Requesting Protocol: " + getRequestingProtocol());
      System.out.println("Requesting Scheme : " + getRequestingScheme());
      System.out.println("Requesting Site  : " + getRequestingSite());
      return new PasswordAuthentication(username, password.toCharArray());
    }
  }

String urlToQuery = request.getParameter("url");
System.out.println(" " +urlToQuery);
//URL url = new URL(urlToQuery);



//InputStream in = conn.getInputStream();

String urlString = "";
String username = "";
String password = "";
Authenticator.setDefault(new MyAuthenticator(username, password));
URL url = new URL(urlToQuery);
URLConnection conn = url.openConnection();
InputStream content = (InputStream) url.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = in.readLine()) != null) {
  System.out.println(line);
}
System.out.println("Done.");





%>

<%=line %>

然后,
MyAuthenticator
应该可以在代码中解析


考虑将Java类移动到一个单独的文件中,以使代码更具可读性。

MyAuthenticator的导入声明在哪里?@adarshr,我认为MyAuthenticator将进入Authenticator,我已经包含了Authenticator的导入。。正确的??语法对于我在jsp中编写的代码是正确的???@adarshr,他在jsp中定义了类。。。再往下看。@SJuan76-哦,是的,从来没有发现过!但这并不是一个定义类的好地方。@adarshr,你能根据我的代码提供一个例子吗。。如何进行http身份验证..那将对我有很大帮助..谢谢你的回复。。你能用我代码中的例子来解释我吗。。因为我不能理解这一点。。因为我对这些东西不熟悉。。这对我会有很大的帮助当然。。。删除所有内容,学习如何编写一个简单的控制台java应用程序(web上有很多教程),以便在尝试使用需要熟悉这些概念的框架之前,先了解java的基本概念(类、可见性等等)。不客气。可以使用JSP声明构造在JSP页面上定义内部类。请保持你的回答有建设性。
    <%@ page language="java" import="java.net.Authenticator,java.net.PasswordAuthentication,java.io.BufferedReader,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%

class MyAuthenticator extends Authenticator {
    private String username, password;

    public MyAuthenticator(String user, String pass) {
      username = user;
      password = pass;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
      System.out.println("Requesting Host  : " + getRequestingHost());
      System.out.println("Requesting Port  : " + getRequestingPort());
      System.out.println("Requesting Prompt : " + getRequestingPrompt());
      System.out.println("Requesting Protocol: " + getRequestingProtocol());
      System.out.println("Requesting Scheme : " + getRequestingScheme());
      System.out.println("Requesting Site  : " + getRequestingSite());
      return new PasswordAuthentication(username, password.toCharArray());
    }
  }

String urlToQuery = request.getParameter("url");
System.out.println(" " +urlToQuery);
//URL url = new URL(urlToQuery);



//InputStream in = conn.getInputStream();

String urlString = "";
String username = "";
String password = "";
Authenticator.setDefault(new MyAuthenticator(username, password));
URL url = new URL(urlToQuery);
URLConnection conn = url.openConnection();
InputStream content = (InputStream) url.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = in.readLine()) != null) {
  System.out.println(line);
}
System.out.println("Done.");





%>

<%=line %>