Невозможно перенаправить на внешние URL-адреса (например, google.com) в моей программе сервлетов - PullRequest
0 голосов
/ 17 октября 2018

Здесь, в моей программе, я принимаю данные от пользователя, используя метод перезаписи URL.Например, если пользователь вводит название компании как google, программа создает URL-адрес как www.google.com, который может вызываться пользователем.Но проблема здесь здесь.Я не могу позвонить по адресу www.google.com, скорее он вызывает localhost: 8080 / Myproject / www.google.com.Для большей ясности обратитесь к моим скриншотам.Спасибо.

Две Java-программы 1. Login.java

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class Login extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
    String Company=req.getParameter("Company");

    PrintWriter pw=res.getWriter();
    pw.println("<html>");
    pw.println("<body bgcolor='green'>");

    pw.println("<p>YOUR ARE LOGGED INTO THE "+ Company +" Sucessfully</p>");
    pw.println("<a href='./Website?Cname="+Company+"'>VISIT</a>");

    pw.println("</body>");
    pw.println("</html");
    pw.close();
 }
}

2.Website.java

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class Website extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{

        String Company=req.getParameter("Cname");

        PrintWriter pw=res.getWriter();

        pw.println("<html>");
        pw.println("<body bgcolor='grey'>");

        String Website="www."+Company+".com";
        pw.println("Website URL="+Website);

        pw.println("<a href='www."+Company+".com'>Website</p>");

        pw.println("</body>");
        pw.println("</html");
        pw.close();

    }
}

Мой HTML-код для ввода

<html>
<body bgcolor='pink'>
    <center>
        <form method="post" action="./Login">
            Enter your Company Name:<input type="text" name="Company">
            <input type="submit" Value="SUBMIT">
        </form>
    </center>
</body>

Мой файл web.xml для сервлета

    <web-app>
    <servlet>
        <servlet-name>SA</servlet-name>
        <servlet-class>Login</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>SA</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>SB</servlet-name>
        <servlet-class>Website</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>SB</servlet-name>
        <url-pattern>/Website</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
    <welcome-file>Images.html</welcome-file>
    </welcome-file-list>

</web-app>

Изображениенумеруются согласно звонку, который происходит.Если вы ссылаетесь на четвертый снимок экрана, URL-адрес читается как «http://localhost:8080/CompanyImages/www.google.com',, но ожидается чтение URL-адреса»: www.google.com

The image are numbered as per the call that is taking place. If you refer to the 4th screenshot, theburl reads as 'http://localhost:8080/CompanyImages/www.google.com', but the expectation is to read the URL, 'www.google.com'

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Что-то вроде:

<a href="bla"></a>

интерпретируется как относительный URL к URL текущей страницы.

Что-то вроде:

<a href="//bla"></a>

интерпретируется как

default_protocol_page: // bla

для примера файла: // bla

Идея состоит в том, чтобы создать полный URL.

0 голосов
/ 17 октября 2018

Я думаю, вам нужно изменить свой код следующим образом

<a href ="http://www.google.com"><p>Website</p></a> Поскольку, если у тега href нет http: //, ваша программа поймет, что это имя сервлета. Кроме того,Вы должны закрыть свой HTML-тег.Например:

<a>content</a> or <b>content</b>

...