如何从JSP中删除硬编码的值并在一行代码中实现重定向?

时间:2019-03-06 12:26:26

标签: java jsp security config

我正在尝试从JSP文件中删除硬编码名称。我需要在Config文件中提供名称并在jsp中调用,以便当用户查看页面源代码时,他不应看到名称。 如何在JSP中做到这一点。

我的代码:

 if (((tech == 'google.com') && ((id == 'email') || id == 'domain'))) || ((tech == 'google') && id == 'test')))
        window.location = (url.substring(0, res + 5) + ("google/") + url.substring(res + 5, url.length));

现在如何删除硬编码的值并在配置文件中提供它,并在此处调用它,这样当我查看页面源代码时就不会看到google.com名称

我的新代码尝试:

 Config.properties
 envs=google.com,yahho.com
 name= google,yahoo
 tokenurl=google/,yahoo/

 sample.jsp

 <%@ page import = "java.util.ResourceBundle" %>

 <% ResourceBundle resource = ResourceBundle.getBundle("config");
 String names=resource.getString("name");
 String env=resource.getString("envs");
 String turls=resource.getString("tokenurl");
 %>

 if (((tech == env[0]) && ((id == 'email') || id == 'domain'))) || ((tech 
 == 'names[0]') && id == 'test')))
 window.location = (url.substring(0, res + 5) + ("turls[0]") + 
 url.substring(res + 5, url.length));
 else if (((tech == env[1]) && ((id == 'email') || id == 'domain'))) || 
 ((tech == 'names[1]') && id == 'test')))
    window.location = (url.substring(0, res + 5) + ("turls[1]") + 
  url.substring(res + 5, url.length));

但是我不确定这是编写代码的正确方法。谁能建议我遵循一种正确的标准方法,以仅在if条件的一行中达成目标?

2 个答案:

答案 0 :(得分:1)

在扩展名为“ .properties”的程序包中创建一个属性文件,并通过在jsp中导入资源包程序包来使用jsp文件中定义的那些属性。

config.properties

name=priya
email=priya@gmail.com
phone=22222

sample.jsp

<%@ page import = "java.util.ResourceBundle" %>

 <% ResourceBundle resource = ResourceBundle.getBundle("config");
    String name=resource.getString("name");
    String email=resource.getString("email");
    String phone=resource.getString("phone");
     %>

    Name:  <input type="text" id="name" value="<%=name %>">
    Email: <input type="text" id="email" value="<%=email %>">
    Phone: <input type="text" id="phone" value="<%=phone %>">

答案 1 :(得分:0)

经典的JSP。在这里,我使用%><%,因此仍未写入任何输出,并且可以重定向到另一页。

  • HTTP首先发送一些标题行,然后发送一个空行,然后发送可选的HTML内容。 进行重定向将是标题行。因此,JSP仍无需编写任何内容。标题行可以说明所使用的字符集/编码,cookie等。

所以:

<%@ page import = "java.util.ResourceBundle"
%><%
   ResourceBundle resource = ResourceBundle.getBundle("config");
   String names = resource.getString("name");
   String[] env = resource.getString("envs").split(",\\s*");
   String turls = resource.getString("tokenurl");

   String tech = request.getParameter("tech");
   if (tech != null && tech.equals("google")) {
       String url = response.encodeRedirectURL(env[13]);
       response.sendRedirect(url); // Just tell the browser to redirect, load the url.
       return;
   }
%>

不幸的是,实际的逻辑是您的事情。与JavaScript的s == 'abc'相比,s.equals("abc")具有function submitForm(){ // do some stuff if ($('#form')[0].checkValidity()) { $('#form').submit(); } }

学习并使用JSP标记和EL表​​达语言会使代码更小。

使用servlet作为 controller 来准备数据,然后将其参数化(或重定向到某些外部URL)作为 view 转发到任何JSP,作为 view 。 em> model ,甚至会更好。