Ya lo tengo terminado he probado a subirlo a un hosting pero no funciona así es que os explicaré un poco el tema:
Tenemos un formulario html.
Mostrar/Ocultar
<form name="Adf_ly_form" method="post" action="WorkingServletOne" id="LayoutGrid5">
<div class="row">
<div class="col-1">
<div id="wb_LayoutGrid1">
<div id="LayoutGrid1">
<div class="row">
<div class="col-1">
<hr id="Line2">
</div>
</div>
</div>
</div>
<div id="wb_LayoutGrid2">
<div id="LayoutGrid2">
<div class="row">
<div class="col-1">
<hr id="Line1">
<div id="wb_Image1">
<img src="images/Untitled0.png" id="Image1" alt="">
</div>
<hr id="Line10">
<div id="wb_Text2">
<span style="color:#6B8E23;font-family:Arial;font-size:24px;">Indetect</span><span style="color:#000000;font-family:Arial;font-size:24px;">ables<br>Adf_ly </span><span style="color:#6B8E23;font-family:Arial;font-size:24px;">Decode</span>
</div>
</div>
<div class="col-2">
<hr id="Line3">
<div id="wb_Image2">
<img src="images/Untitled0.png" id="Image2" alt="">
</div>
<hr id="Line9">
</div>
</div>
</div>
</div>
<div id="wb_LayoutGrid4">
<div id="LayoutGrid4">
<div class="row">
<div class="col-1">
<hr id="Line5">
<input type="text" id="Editbox1" name="EditText_Url" value="" required placeholder="Type Adf.ly url to decode ">
<hr id="Line4">
<input type="submit" id="Button1" name="ButtonDecode" value="Decode">
<hr id="Line6">
</div>
</div>
</div>
</div>
<div id="wb_Text1">
<span style="color:#000000;font-family:Arial;font-size:13px;">Code by: </span><span style="color:#FFFF00;font-family:'Comic Sans MS';font-size:19px;"><strong>Design_In _Vitro</strong></span>
</div>
</div>
</div>
</form>
Como se puede apreciar en el código on submit llamamos a mi Servlet ¿Qué hace mi servlet?
Pues lo que hace es coger el parámetro del Request y me lo mete en un String
Eh aquí el código del Servlet documentado
Mostrar/Ocultar
package ServletContainer;
import Adf_lyBean.DecodeAdfUrl;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WorkingServletOne extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Creo un objeto decodeurl de la clase DecodeAdfUrl
DecodeAdfUrl decodeurl = new DecodeAdfUrl();
response.setContentType("text/html;charset=UTF-8");
//Meto en el String el request del index.html
String geturlform=request.getParameter("EditText_Url");
//Chekeo el inicio de la url sino es un adf_ly mando
//a html wrong...!
if(!geturlform.startsWith("[Enlace externo eliminado para invitados]");}
else {
//Mando url al método decodeAdf_ly
decodeurl.decodeAdf_ly(geturlform);
//Obtengo los atributos del objeto decodeurl de esta sesión
request.getSession().setAttribute("decodeurl", decodeurl);
//Open ShowUrl.
response.sendRedirect("ShowUrl.jsp");
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
Código del JavaBean que es el controlador
Mostrar/Ocultar
package Adf_lyBean;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DecodeAdfUrl {
private String cleanResponse;
private String retorno;
private StringBuilder sb = new StringBuilder();
private StringBuilder sb1 = new StringBuilder();
private String adfly_url=null;
private StringBuffer response = new StringBuffer();
private Pattern p = Pattern.compile("var ysmm = \'(.+?)\';");
public DecodeAdfUrl() {
}
public String getAdfly_url() {
return adfly_url;
}
public void setAdfly_url(String adfly_url) {
this.adfly_url = adfly_url;
}
/**Método del Objeto DecodeAdfurl que
obtiene la url encodeada y la decodifica
y la almacena en la variable de tipo String adfly_url**/
public void decodeAdf_ly (String adfurl) throws MalformedURLException{
URL url1 = new URL(adfurl);
String inputline;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(url1.openStream()));
while ((inputline = in.readLine()) != null) {
response.append(inputline + "\n");
}
in.close();
Matcher m = p.matcher(response.toString());
while( m.find() ){
cleanResponse=m.group(1);
for (int i=0;i < cleanResponse.length();i+=2){
sb.append(cleanResponse.substring(i,i+1));}
for(int b=cleanResponse.length()-1;b>=0;b-=2){
sb1.append(cleanResponse.charAt(b));}
String bytesEncoded=sb.toString().concat(sb1.toString());
byte[] valueDecoded= Base64.decode(bytesEncoded );
adfly_url= new String (valueDecoded).substring(2);
}
} catch (IOException ex) {
Logger.getLogger(DecodeAdfUrl.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Para que nadie se me pierda index.html con formulario >>>>Submit>>>>>Llamo a mi servlet
el servlet coge los parámtros del Método post comprueba que comienza la url por Adf_ly y
sino empieza por Adf_ly abre la página de error si comienza por Adf_ly la url envía al Método
de mi Objeto recién creado llamado DecodeAdfUrl , a partir de aquí sigue el flujo en el servlet
que lo que hace es abrir la página que cogerá el String decodificado y lo muestra por pantalla
Aqui código de pantalla de error.
Mostrar/Ocultar
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>WrongPage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="Untitled1.css" rel="stylesheet">
<link href="BadMessage.css" rel="stylesheet">
</head>
<body>
<div id="wb_LayoutGrid2">
<div id="LayoutGrid2">
<div class="row">
<div class="col-1">
<div id="wb_Text2">
<span style="color:#6B8E23;font-family:Arial;font-size:24px;">Indetect</span><span style="color:#000000;font-family:Arial;font-size:24px;">ables<br>Adf_ly </span><span style="color:#6B8E23;font-family:Arial;font-size:24px;">Decode</span>
</div>
</div>
<div class="col-2">
<div id="wb_Image1">
<img src="images/img0002.png" id="Image1" alt="">
</div>
<hr id="Line4">
<div id="wb_LayoutGrid1">
<div id="LayoutGrid1">
<div class="row">
<div class="col-1">
<div id="wb_Image3">
<img src="images/Untitled0.png" id="Image3" alt="">
</div>
</div>
<div class="col-2">
<hr id="Line2">
<div id="wb_Text1">
<span style="color:#FF0000;font-family:Arial;font-size:27px;"><strong>Something was wrong<br>Try again..!</strong></span>
</div>
<hr id="Line5">
</div>
</div>
</div>
</div>
<hr id="Line6">
<input type="submit" id="Button2" onclick="window.location.href='./index.html';return false;" name="" value="Home">
</div>
<div class="col-3">
</div>
</div>
</div>
</div>
</body>
</html>
Aquí código de la página que muestra el resultado correcto:
Mostrar/Ocultar
<%@page import="Adf_lyBean.DecodeAdfUrl"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% DecodeAdfUrl decodeurl=(DecodeAdfUrl)request.getSession().getAttribute("decodeurl");%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>GodPage</title>
<link href="Untitled1.css" rel="stylesheet">
<link href="ShowUrl.css" rel="stylesheet">
</head>
<body>
<div id="wb_LayoutGrid1">
<div id="LayoutGrid1">
<div class="row">
<div class="col-1">
<hr id="Line2">
<div id="wb_Text2">
<span style="color:#6B8E23;font-family:Arial;font-size:24px;">Indetect</span><span style="color:#000000;font-family:Arial;font-size:24px;">ables<br>Adf_ly </span><span style="color:#6B8E23;font-family:Arial;font-size:24px;">Decode</span>
</div>
</div>
</div>
</div>
</div>
<div id="wb_LayoutGrid2">
<div id="LayoutGrid2">
<div class="row">
<div class="col-1">
</div>
<div class="col-2">
<div id="wb_Image1">
<img src="images/img0001.png" id="Image1" alt="">
</div>
<div id="wb_LayoutGrid4">
<div id="LayoutGrid4">
<div class="row">
<div class="col-1">
<hr id="Line7">
<input type="text" id="Editbox1" name="EditboxUrlfinal" value="<%= decodeurl.getAdfly_url()%>">
<hr id="Line8">
</div>
<div class="col-2">
<hr id="Line1">
<div id="wb_Image3">
<img src="images/Untitled0.png" id="Image3" alt="">
</div>
</div>
</div>
</div>
</div>
<hr id="Line4">
<input type="submit" id="Button1" onclick="window.location.href='./index.html';return false;" name="Button_2" value="Home">
<hr id="Line5">
</div>
<div class="col-3">
</div>
</div>
</div>
</div>
</body>
</html>
Aquí la página subida a un hosting pero no funciona el servlet ¿Porqué ? pues porque la versión
con la que lo he creado es superior a la del hosting por consiguiente es incompatible.
[Enlace externo eliminado para invitados]
Eso es todo amigos...! estoy contento de haber conseguido mi nuevo reto
este reto me abre cientos de posibilidades nuevas para mis conocimientos
PD: Viviendo y aprendiendo