2015-09-16 3 views
-3

На самом деле я сделал это с помощью скрытой концепции поля и использования файлов cookie. Но с этими методами стоит одна проблема. Если пользователь или клиент вручную добавят строку запроса в url и файлы cookie в браузере, наш веб-сайт примет, что да javascript включен. Тогда, пожалуйста, скажите мне другой метод. Это моя JSP страница -Как проверить, включен ли скрипт Java или нет на стороне клиента из сервлета?

<%@ page language="java"%> 
     <html> 
     <head> 
     <title>Registration</title> 
     <script type="text/javascript" src="../js/Validation.js"></script> 
     </head> 
     <body> 
     <form action="<%=request.getContextPath()%>/RegisterUser" method="post" onsubmit="return javascript:validate();"> 
     UserName : <input type="text" name="userName" id="userName" placeholder="Enter User Name"> 
     Email : <input type="text" name="email" id="email" placeholder="Enter Email Id"> 
     Password : <input type="password" name="password" id="password" placeholder="Enter Password"> 
     Retype-Password : <input type="password" name="repassword" id="repassword" placeholder="Enter Password Again"> 
     <input type="submit" value="Register"> 
     <input type="hidden" name="jsStatus" id="jsStatus"> 
     </form> 
     </body> 
     </html> 

И у меня есть Java Script, как

function validate() { 
    var userName = document.getElementById("userName").value; 
    var email = document.getElementById("email").value; 
    var password = document.getElementById("password").value; 
    var repassword = document.getElementById("repassword").value; 
    var jsStatus = document.getElementById("jsStatus").value = "enabled"; 
    return true; 
} 

И мой сервлет:

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/RegisterUser") 
public class RegisterServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doPost(request,response); 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
//  general settings 
     PrintWriter pw = response.getWriter(); 
     response.setContentType("text/html"); 

//  Reading request parameters 
     if(request.getParameter("jsStatus").equalsIgnoreCase("enabled")){ 
      pw.println("<font>Java Script Is Enabled</font>"); 
     } 
     else{ 
      pw.println("<font>Java Script Is Disabled</font>"); 
     } 
    } 
} 

Вопрос: Теперь, если я щелкнет на кнопке регистра это будет хорошо, и отображение JavaScript включено, если включено, в противном случае JavaScript отключен. Но если я дам запрос на этот сервлет вручную, расширив строку запроса как jsStatus = enabled, тогда и мой сервлет отобразит, что javascript включен, тогда моя логика в сервлет также будет выполнена. Как решить эту проблему?

+0

Почему ваш сервер зависит от включенности JavaScript в браузере пользователя? Я просто проверю, включен ли он или нет, и если не предупредить пользователя о том, что сайт не будет работать должным образом. – Thomas

+2

Вы сделали что? Вопрос слишком расплывчатый. Пожалуйста, сушите свою конкретную проблему и укажите ее на свой код. – charlietfl

ответ

0

Если вы хотите, чтобы отобразить «JavaScript отключен», вы можете сделать следующее в вашем HTML:

<noscript>JavaScript is disabled</noscript> 

Если есть на самом деле вещи вы хотите сделать на заднем конце, когда JavaScript отключен, пожалуйста, напишите комментарий, и я обновлю ответ.

Похоже, вы пытаетесь проверить ввод пользователя на стороне клиента. Если это так, не делайте этого, потому что клиентский JavaScript можно изменить и тем самым саботировать ваш код проверки. Пользовательский вход всегда должен быть проверен на стороне сервера (как клиент, так и серверы в порядке, клиентская сторона будет только для приятных сообщений об ошибках и уменьшения количества запросов на ваш сервер).

+0

@Vivek Kurmi. Примите мой ответ, если он ответит на ваш вопрос или оставьте комментарий, если это не так. – leroydev

+0

На самом деле я не хочу выполнять проверку дважды. Я хочу, чтобы, если javascript отключен, то только я хочу выполнить проверку на стороне сервера. Но добавление строки запроса приводит к сбою моей логики на стороне сервера, поскольку я записываю в свой код сервлета. Так что делать? Пожалуйста, скажите мне. –

+0

@Vivek Kurmi Я не отвечаю на ваш вопрос. Если вы хотите сделать валидацию на стороне клиента, если включен JavaScript, и если JavaScript отключен на стороне сервера, не делайте этого, всегда проверяйте, по крайней мере, на сервере. – leroydev

Смежные вопросы