我使用Eclipses数据源资源管理器将我的Web应用程序连接到数据库时遇到问题.
这就是我做的:

也许我确实配置了错误的驱动程序.这就是我如何从eclipse Helios配置驱动程序定义.Window-> Preferences-> DataManagement-> Conectivity-> Driver Definitions:
1
2

3

4

我能够启动应用程序服务器,甚至可以通过浏览器访问应用程序.但我无法与数据库进行交互.这就是webapp的配置文件的样子:
persistence.xml中
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="jdbc/GroupBuySystem">
<class>entities.Administ</class>
<class>entities.Buyer</class>
<class>entities.Comment</class>
<class>entities.Log</class>
<class>entities.Offer</class>
<class>entities.Seller</class>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
太阳resources.xml中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="jdbc/myDatasource" object-type="user" pool-name="Derby_groupbuydb_userPool"/>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.ClientDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="Derby_groupbuydb_userPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" …Run Code Online (Sandbox Code Playgroud) 我是scala和sbt的新手,我想运行sbt命令但是我得到一些Nullpointer异常,不知道为什么.
我在系统中安装了scala:
scala -version Scala代码运行器版本2.11.8 - 版权所有2002-2016,LAMP/EPFL
此外,如果我尝试检查sbt版本工作正常:
sbt --version sbt launcher version 0.13.5
但是当我运行sbt时,我得到一个例外:
info] Loading project definition from /home/workspace/myproject
java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(java.base@9-internal/Matcher.java:1747)
at java.util.regex.Matcher.reset(java.base@9-internal/Matcher.java:402)
at java.util.regex.Matcher.<init>(java.base@9-internal/Matcher.java:244)
at java.util.regex.Pattern.matcher(java.base@9-internal/Pattern.java:1108)
at java.util.regex.Pattern.split(java.base@9-internal/Pattern.java:1221)
at java.util.regex.Pattern.split(java.base@9-internal/Pattern.java:1288)
at sbt.IO$.pathSplit(IO.scala:744)
at sbt.IO$.parseClasspath(IO.scala:859)
at sbt.compiler.CompilerArguments.extClasspath(CompilerArguments.scala:62)
at sbt.compiler.MixedAnalyzingCompiler$.withBootclasspath(MixedAnalyzingCompiler.scala:189)
at sbt.compiler.MixedAnalyzingCompiler$.searchClasspathAndLookup(MixedAnalyzingCompiler.scala:167)
at sbt.compiler.MixedAnalyzingCompiler$.apply(MixedAnalyzingCompiler.scala:177)
at sbt.compiler.IC$.incrementalCompile(IncrementalCompiler.scala:138)
at sbt.Compiler$.compile(Compiler.scala:128)
at sbt.Compiler$.compile(Compiler.scala:114)
at sbt.Defaults$.sbt$Defaults$$compileIncrementalTaskImpl(Defaults.scala:814)
at sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:805)
at sbt.Defaults$$anonfun$compileIncrementalTask$1.apply(Defaults.scala:803)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon$4.work(System.scala:63)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:235)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) …Run Code Online (Sandbox Code Playgroud) 当我尝试在托管bean中验证来自我的JSF的用户输入时,我遇到了一些问题.我在控制台中收到了验证消息,但我没有在页面中看到它.我不明白问题出在哪里.
这是控制台输出:
信息:内部验证方法!! 信息:没有比赛!信息:实例化org.hibernate.validator.engine.resolver.JPATraversableResolver的实例.信息:警告:FacesMessage已入队,但可能尚未显示.的SourceID = bRegForm:名称[严重性=(INFO 0),摘要=(您的名字不能包含特殊字符),细节=(您的名字不能包含特殊字符)]
这就是我制作JSF输入组件的方式:
<h:inputText id="name" value="#{registrationController.name}" validator="#{registrationController.validateName}" required="true">
<h:message for="name"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
这就是我如何创建验证方法:
@ManagedBean
@RequestScoped
public class RegistrationController {
...
public void validateName(FacesContext context, UIComponent validate,
Object value) {
String inputFromField = (String) value;
String simpleTextPatternText = "^[a-zA-Z0-9]+$";
Pattern textPattern = null;
Matcher nameMatcher = null;
textPattern = Pattern.compile(simpleTextPatternText);
nameMatcher = textPattern.matcher(inputFromField);
System.out.println("Inside validation method!!");
if (!nameMatcher.matches()) {
System.out.println("NO MATCH!!!");
FacesMessage msg = new FacesMessage(
Your name cannot contain special characters);
throw new ValidatorException(msg);
}
} …Run Code Online (Sandbox Code Playgroud) 我需要下载存储在数据库中的文件.我想我做了正确的查询并调用它我只是不知道如何将它连接到JSF页面中的按钮.另外我想知道,在将它传递到JSF页面之前,我是否必须将该图像保存在服务器的文件夹中.如果是这样,我该怎么做?
这是我用来从db返回byte []的查询:
@NamedQuery(name = "downloadGarbage", query = "SELECT g.file FROM Garbage g WHERE g.id :idParam")
@Entity
public class Garbage implements Serializable {
@Lob
@Column(nullable = false)
private byte[] file;
....
Run Code Online (Sandbox Code Playgroud)
这是一个简单的EJB,它调用该查询然后获取id:
@Stateless(name = "ejbs/FileDownloaderEJB")
public class FileDownloaderEJB implements IFileDownloaderEJB {
@PersistenceContext
private EntityManager em;
public byte[] downloadGarbage(Long id) {
Query query = em.createNamedQuery("downloadGarbage");
query.setParameter("idParam", id);
Object o = query.getSingleResult();
byte[] tmpArray = (byte[]) o;
return tmpArray;
}
Run Code Online (Sandbox Code Playgroud)
现在这是困扰我的部分,我在JSF页面和托管bean上面怎么样?
@ManagedBean
@RequestScoped
public class DownloadController {
@EJB
private FileDownloaderEJB fileDownloaderEJB;
... …Run Code Online (Sandbox Code Playgroud) 我想为我的网络应用程序创建一个授权过滤器(以便能够限制对某些页面的访问).
我创建了一个简单的.xml文件,其中包含允许每个用户访问的页面:
<access>
<buyer>
<page>buyoffer.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</buyer>
<seller>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</seller>
<administrator>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</administrator>
</access>
Run Code Online (Sandbox Code Playgroud)
然后我需要进行解析以提取页面的值,以便能够创建允许或重定向的条件(依赖).我只需要告诉某人如何从xml中提取这些页面的值.这就是我现在所做的:
public class RestrictPageFilter implements Filter {
private FilterConfig fc;
private DocumentBuilder builder;
private Document document;
public void init(FilterConfig filterConfig) throws ServletException {
// The easiest way to initialize the filter
fc = filterConfig;
// Get the file that contains the allowed pages
File f = new File("/allowedpages.xml");
// Prepare the file …Run Code Online (Sandbox Code Playgroud) 我需要在表格(Homework)中执行更新.但它不只是用新的价值取代旧的价值; 对于列中已存在的值,我必须添加(SUM)新值(该列的类型为int).这是我到目前为止所做的,但我被困住了:
protected void subscribeButton_Click(object sender, EventArgs e)
{
string txtStudent = (selectedStudentLabel.Text.Split(' '))[0];
int studentIndex = 0;
studentIndex = Convert.ToInt32(txtStudent.Trim());
SqlConnection conn = new SqlConnection("Server=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database.mdf;Trusted_Connection=True;User Instance=yes");
conn.Open();
string sql2 = "UPDATE student SET moneyspent = " + ?????? + " WHERE id=" + studentIndex + ";";
SqlCommand myCommand2 = new SqlCommand(sql2, conn);
try
{
conn.Open();
myCommand2.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex);
}
finally
{
conn.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
我应该添加什么?实现我的目标?
有可能这样做吗?我想避免使用很多查询.
我向在大学学习这门课程的学生讲授Java编程语言的基础知识.
今天其中一个让我对她的问题感到困惑,所以我告诉她给我一天的时间来思考这个问题,我会尽可能准确地给她答案.
她告诉我,当她instanceof在考试中使用关键词时,老师非常生气.
此外,她说老师说没有办法证明如果使用这个词,多态性是如何起作用的.
我想了很多,试图找到一种方法来证明在某些情况下我们需要使用instanceof,而且即使我们使用它,在这种方法中仍然存在一些多态性.
所以这是我做的例子:
public interface Animal
{
public void talk();
}
class Dog implements Animal {
public void talk() {
System.out.println("Woof!");
}
}
public class Cat implements Animal
{
public void talk() {
System.out.println("Meow!");
}
public void climbToATree() {
System.out.println("Hop, the cat just cimbed to the tree");
}
}
class Hippopotamus implements Animal {
public void talk() {
System.out.println("Roar!");
}
}
public class Main {
public static void main(String[] args) {
//APPROACH 1 …Run Code Online (Sandbox Code Playgroud) 关于我在EL中调用方法的方式,我有几个问题.也许有人可以解释它是如何运作的.
我做了这个非常简单的例子:
的index.xhtml
<h:body>
<!-- Using a method -->
#{bba.salute()}
<br/>
<h:outputText value="#{bba.salute()}"/>
<br/>
<!-- Using a method from an injected bean-->
#{bba.b.doSomething()}
</h:body>
Run Code Online (Sandbox Code Playgroud)
BackBeanA.java
@Named("bba")
@SessionScoped
public class BackBeanA implements Serializable {
private static final long serialVersionUID = 5671761649767605303L;
@Inject
private BackBeanB b;
public String salute() {
return "Hi! I am 'A'";
}
public BackBeanB getB() {
return b;
}
public void setB(BackBeanB b) {
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
BackBeanB.java
@Named("bbb")
@SessionScoped
public class BackBeanB implements Serializable { …Run Code Online (Sandbox Code Playgroud) 我正在学习使用JSF 2.0的复合组件,我希望我的组件能够从支持bean中触发方法,所以我创建了一个简单的例子,但是出了点问题.
这是我创建的组件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="attribute1"/>
<composite:attribute name="attribute2"/>
<composite:attribute name="actionBtnText"/>
<composite:attribute name="actionMethod" method-signature="java.lang.String action()"/>
</composite:interface>
<composite:implementation>
<h:form>
<h:inputText value="#{cc.attrs.attribute1}"/>
<br/>
<h:inputText value="#{cc.attrs.attribute2}"/>
<br/>
<h:commandButton action="#{cc.attrs.actionMethod}" value="#{cc.attrs.actionBtnText}"/>
</h:form>
</composite:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我在JSF页面中使用它的方式
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:custom="http://java.sun.com/jsf/composite/custom">
...
<h:body>
<custom:demoCustomComponent attribute1="#{demoBB.value1 }" attribute2="#{demoBB.value2 }" actionBtnText="Button text!" actionBtn="#{demoBB.act}"/>
</h:body>
Run Code Online (Sandbox Code Playgroud)
这是支持组件所在页面的支持bean
@Named("demoBB")
@RequestScoped
public class DemoBB {
private String value1;
private String value2;
public String getValue1() {
return value1;
}
public String act() {
System.out.println("Input 1: " + value1 …Run Code Online (Sandbox Code Playgroud) 我试图在本教程后面的glassfish 3.1中配置一个简单的文件域:
我做了一切,因为它说但不起作用,当我前往管理页面时,我没有看到弹出消息要求凭据.这就是我做的:
1-创建文件域:

2-然后我使用manage users按钮创建了一个用户

3-I使用图形界面而不是编辑器创建了glassfish-web.xml文件

4 - 然后以同样的方式配置web.xml
对不起,如果最后一张图片有点难以看清,你可以放大.
当我使用URL前往/admin.xhtml时,没有什么能阻止我查看页面内容,这意味着没有正确配置.我不知道我错过了什么.有人可以试着找出我不能让这个简单的安全任务工作的原因吗?
更新
这是我的web.xml源码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>Constraint1</display-name>
<web-resource-collection>
<web-resource-name>allowed</web-resource-name>
<description/>
<url-pattern>/admin.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>administrator</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
<security-role>
<description/>
<role-name>administrator</role-name>
</security-role>
</web-app>
Run Code Online (Sandbox Code Playgroud)
还有glassfish-web.xml源码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server …Run Code Online (Sandbox Code Playgroud)