下面的URL,所选答案中的第一个内容描述了JSP隐藏.
我到目前为止了解到我可以将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) 我可以使用仅返回一个表中的数据的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) 我正在尝试在静态方法中模拟静态方法。
我想知道是否可以不使用任何框架。
以下是我尝试过的。
目标: 模拟 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) 看看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) 我成功创建了具有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) 我正在更深入地学习哈希码,并认为:
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) 我压缩了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这样的代码)
我读过: 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 "/head_first/header.jsp" 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标签中使用时不能正常工作?
我想知道如何使用JPA(toplink essentials)从服务器到客户端处理实体类中的乐观锁版本属性,反之亦然.
这是场景.
从浏览器用户发送请求到服务器,要求编辑个人用户信息.
服务器处理请求并将结果返回给浏览器.服务器代码类似于:
EntityManager em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();
用户u =(用户)em.find(User.class,myUserId);
回报你; //回复浏览器
在这里,我的困惑是User表有"version"列optimistic locking.
这意味着版本字段的值也会被发送回客户端,即使客户端(我或任何人)永远不会使用它.版本字段将用于服务器端代码.
那么将版本号发送给客户端是否正确?因为否则我无法弄清楚如何检查版本号,以防用户点击带有修改数据的网页上的"更新"按钮.
如果您需要更多说明,请告诉我.
我用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)