小编mas*_*san的帖子

隐藏直接访问JSP页面,但是如何访问目标页面?

下面的URL,所选答案中的第一个内容描述了JSP隐藏.

JSP/Servlet的隐藏功能

我到目前为止了解到我可以将jsp文件放在/ WEB-INF目录下.这样就可以防止用户直接访问http://test.com/WEB-INF/register.jsp(返回404)

我以为我理解但不想并且想要更好地描述,所以我在这里提出问题.

比方说,我有2个jsp文件.

web应用/ ROOT /针对home.jsp

web应用/ ROOT/WEB-INF/register.jsp

注意:/go_register映射到Registerweb.xml(DD)中的servlet类

针对home.jsp

<html>
<body>
  <a href="/go_register">Go to register.jsp</a>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)

register.jsp

<html>
<body>
  <form method="post" action="/process_register">
  <input type="submit">
</form>
<body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以..因为register.jsp位于/ WEB-INF /下,所以只有RequestDispatcher可以访问它.这意味着我需要创建用于转发请求的servlet.

public class Register extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String address = "/WEB-INF/register.jsp";
        request.getRequestDispatcher(address).forward(request, response);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这看起来不对.如果我想将登录页面/WEB-INF/login.jsp添加到home.jsp,为了访问login.jsp,我必须创建另一个servlet 只是为了进入登录页面目的 ???

public class Login extends HttpServlet {

    public void doGet(HttpServletRequest request, …
Run Code Online (Sandbox Code Playgroud)

java jsp servlets hide

5
推荐指数
1
解决办法
6600
查看次数

如何处理JPQL查询返回的Object类型?

我可以使用仅返回一个表中的数据的JPQL轻松完成此操作.

SELECT m1 FROM MasatosanTest m1
Run Code Online (Sandbox Code Playgroud)

这意味着返回一种数据类型.所以我可以将查询结果存储到指定类型的List中:

List<MasatosanTest> mt = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

代码段

private static final String JPQL_TEST = "SELECT m1 FROM MasatosanTest m1;

    @Path("innerJoin")
        @GET
        @Produces("application/json")
        public List<MasatosanTest> getJoinedResult() {
            System.out.println("getJoinedResult called");
            EntityManager em = null;
            List<MasatosanTest> mt = null;

            try {
                em = EmProvider.getDefaultManager();
                Query query = em.createQuery(JPQL_TEST);
                mt = query.getResultList();
            }
            catch(Exception e) {
                System.out.println("MasatosanTestResource.java - getJoinedResult ERROR: " + e);
            }
            finally {
                if(em != null) {
                    em.close();
                }
            }
            return mt;
        }
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试涉及2个表的JPQL ....

询问

SELECT …
Run Code Online (Sandbox Code Playgroud)

java jpa jpql

5
推荐指数
1
解决办法
7664
查看次数

如何在静态方法中模拟对象?

我正在尝试在静态方法中模拟静态方法。

我想知道是否可以不使用任何框架

以下是我尝试过的。

目标: 模拟 ImageIO 对象,以便我知道对返回值的期望。

class Foo {

  public static SomeObject Run(String path) {
     File file = new File(path);
     BufferedImage buff = ImageIO.read(file);

     SomeObject some = new SomeObject(buff);
     return some;
  }
}
Run Code Online (Sandbox Code Playgroud)

我首先尝试使用接口并为 ImageIO 创建一个包装器。

 interface ImageReader {
     public BufferedImage read(File file);
 }

 class RealReader implements ImageReader {
     @Override
     public BufferedImage read(File file) {
         return ImageIO.read(file);
     }
 }

 class MockReader implements ImageReader {
     @Override
     public BufferedImage read(File file) {
         BufferedImage buff = new BufferedImage(0,0,0);
         //do whatever …
Run Code Online (Sandbox Code Playgroud)

java static mocking

5
推荐指数
1
解决办法
1106
查看次数

ANT - 如何使用exclude,用javac排除文件?

看看stackoverflow上的几个帖子以及其他来源(在线+ ANT定义指南书),但到目前为止它们都没有帮助.我无法从编译中排除该文件.

我只有一个文件想要从编译中排除,而ANT文档并没有真正说明细节.我正试图排除HTMLParser.java编译.也尝试使用excludesfile过.但它仍然符合HTMLParser.java

我写了简单的ANT来检查下面尝试不同的变化.

谁能告诉我什么是错的?

<javac srcdir="${utilitiesSrc}" destdir="${dest}">
      <excludesfile name="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities\HTMLParser.java" />
</javac>
Run Code Online (Sandbox Code Playgroud)
<project 
     name="CompileMasatosan"  
     default="main"
     basedir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan">

     <property name="dest"
    location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes" />


     <property name="utilitiesSrc" 
        location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities" />

    <javac srcdir="${utilitiesSrc}" destdir="${dest}">
         <exclude name="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\utilities\HTMLParser.java" />
    </javac>
</project>
Run Code Online (Sandbox Code Playgroud)

HTMLParser.java我认为没有依赖,因为我评论了除了类声明行以外的所有行.

HTMLParser.java

package com.masatosan.utilities;

public class HTMLParser {
/*  commenting out since Eclipse doesn't like some characters :(

    public static final String escapeHTML(String s){ …
Run Code Online (Sandbox Code Playgroud)

java ant javac

4
推荐指数
2
解决办法
1万
查看次数

如何在<apex:pageBlockTable>超链接中创建项目(列)?

我成功创建了具有salesforce提供的样式的表.(就像在鼠标悬停时突出显示的那个)

但是我希望column的值是一个显示对象详细信息的链接.当我不创建自己的visualforce页面时,表格看起来不错,列值(记录)都是超链接但无法弄清楚如何从visualforce apex代码执行此操作.

pageBlockTable和列定义似乎没有属性或任何使其成为超链接的东西.

http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlockTable.htm
http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_column.htm

<apex:pageBlock title="test">
    <apex:pageBlockTable value="{!workObj}" var="item">
        <!-- below needs to be hyperlink -->
        <apex:column value="{!item.name}" /> 
    </apex:pageBlockTable>
</apex:pageBlock>
Run Code Online (Sandbox Code Playgroud)

我可以通过如下所示抛出好的设计来实现我的目标,但我想保留上面的代码.

这有效但不应用salesforce样式.

 <apex:pageBlock title="my test title" >    
            <apex:dataTable value="{!workObj}" var="wn" cellpadding="2" cellspacing="2">
                <apex:column>
                    <apex:facet name="header">?????</apex:facet>
                    <apex:form >
                        <apex:commandLink value="{!wn.name}" />
                    </apex:form>
                </apex:column>
            </apex:dataTable>
    </apex:pageBlock>
Run Code Online (Sandbox Code Playgroud)

salesforce hyperlink visualforce xmltable

4
推荐指数
1
解决办法
3万
查看次数

==运算符和equals()之间有什么区别?(用hashcode()???)

我正在更深入地学习哈希码,并认为:

1.如果重写equals(),则必须覆盖hashcode().

2.要查找2个对象是否是同一个对象,请使用==运算符

考虑到这两个因素,在Java中我假设当== operator用于比较2个实例是否相同时,

if(object1 == object2)
Run Code Online (Sandbox Code Playgroud)

实际上是在做

if(object1.hashcode() == object2.hashcode())
Run Code Online (Sandbox Code Playgroud)

但是通过下面的测试看起来我错了.

public class Main {

    public static void main(String[] args){
        Obj1 one = new Obj1();
        Obj1 two = new Obj1();
        //is this calling hashCode() in backend???
        if(one == two) {
            System.out.println("same");
        }
        else {
            System.out.println("nope");
        }
        //this is of course return true
        if(one == one) {
            System.out.println("one and one is same");
        }
    }
}

class Obj1 {
    @Override
    public int hashCode() {
        System.out.println("hashCode() is called"); …
Run Code Online (Sandbox Code Playgroud)

java equals operators hashcode

4
推荐指数
2
解决办法
1万
查看次数

salesforce - 静态资源中的压缩css不呈现,为什么?

我压缩了CSS和图像文件,以便CSS可以访问图像.

http://www.salesforce.com/us/developer/docs/pages/Content/pages_resources.htm

我已经按照文档代码,但它根本没有呈现.

    <apex:stylesheet value="{!URLFOR($Resource.jquery_dialog_css_img,
 'jquery_ui_one_dot_eight_dot_eleven.css')}" />
Run Code Online (Sandbox Code Playgroud)

压缩文件结构是:

[jquery_dialog_css_img] ---- jquery_ui_one_dot_eight_dot_eleven.css
                         |
                         |---images ----- someImage.jpg
Run Code Online (Sandbox Code Playgroud)

渲染visualforce页面时,导入标记如下所示:

        <link class="user" href="/resource/1301916406000/
          manenabi__jquery_dialog_css_img/
          jquery_ui_one_dot_eight_dot_eleven.css" 
          rel="stylesheet" 
          type="text/css" /> 
Run Code Online (Sandbox Code Playgroud)

它看起来是正确的,我不知道为什么它不工作.当我点击生成的链接时:

/ resource/1301916406000/manenabi__jquery_dialog_css_img/jquery_ui_one_dot_eight_dot_eleven.css

页面全是空白的(我认为)意味着路径不正确.(如果是正确的,弹出的页面会显示像js或css这样的代码)

salesforce visualforce staticresource

4
推荐指数
1
解决办法
6473
查看次数

jsp:包括不使用Expression Language(JSP版本2.5,启用EL)

我读过: JSP中的表达式语言无法正常工作, 但略有不同.

使用EL进行引用文件的工作原理如下.

   <link rel="stylesheet" type="text/css" 
href="${pageContext.request.contextPath}/css/global.css"/>
Run Code Online (Sandbox Code Playgroud)

但是当尝试使用带有EL表达式的JSP include标记时:

<jsp:include page="${pageContext.request.contextPath}/header.jsp" />
Run Code Online (Sandbox Code Playgroud)

这将返回http 500.

org.apache.jasper.JasperException: javax.servlet.ServletException: File &quot;/head_first/header.jsp&quot; not found
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Run Code Online (Sandbox Code Playgroud)

我也确保启用EL.

<%@ page isELIgnored ="false" %>
Run Code Online (Sandbox Code Playgroud)

我的tomcat版本是6.0,web.xml定义JSP是2.5

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么EL在jsp:include标签中使用时不能正常工作?

jsp expression include

3
推荐指数
1
解决办法
6859
查看次数

JPA乐观锁版本处理 - 版本值应该被带到客户端还是?

我想知道如何使用JPA(toplink essentials)从服务器到客户端处理实体类中的乐观锁版本属性,反之亦然.

这是场景.

  1. 从浏览器用户发送请求到服务器,要求编辑个人用户信息.

  2. 服务器处理请求并将结果返回给浏览器.服务器代码类似于:

    EntityManager em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();

    用户u =(用户)em.find(User.class,myUserId);

    回报你; //回复浏览器

在这里,我的困惑是User表有"version"optimistic locking.

这意味着版本字段的值也会被发送回客户端,即使客户端(我或任何人)永远不会使用它.版本字段将用于服务器端代码.

那么将版本号发送给客户端是否正确?因为否则我无法弄清楚如何检查版本号,以防用户点击带有修改数据的网页上的"更新"按钮.

如果您需要更多说明,请告诉我.

java jpa optimistic-locking toplink-essentials

3
推荐指数
1
解决办法
1307
查看次数

Javascript OOP - 对象如何调用其实例方法?

我用OOP写了我的第一个Javascript.我试图从同一个对象中的另一个方法调用它的实例方法.

当我调用关闭对话框后触发的下面的begin()方法时,我得到了 "this.after() is not a function".

如果像Java这样的其他语言,它应该只是处理没有任何问题.有什么我想念的吗?

我正在使用jQuery bind()进行对话关闭事件,因此"this"必须指向不是类本身.

function MyHandler() {

    this.begin = function() {
            $("#hiddenIframe").dialog({
                autoOpen: true,
                height: 300,
                width: 300
            });


            $("#hiddenIframe").bind("dialogclose", function() {
                this.after();
            });
    }

    this.after = function() {
        //do something here
    }
}

var myInstance = new MyHandler();
myInstance.begin(); //error: this.after() is not function ???
Run Code Online (Sandbox Code Playgroud)

javascript oop

3
推荐指数
1
解决办法
2364
查看次数