Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat、JPA、Eclipse-名称不在此上下文中绑定_Java_Eclipse_Tomcat_Jpa_Jdbc - Fatal编程技术网

Java Tomcat、JPA、Eclipse-名称不在此上下文中绑定

Java Tomcat、JPA、Eclipse-名称不在此上下文中绑定,java,eclipse,tomcat,jpa,jdbc,Java,Eclipse,Tomcat,Jpa,Jdbc,嗨,我写了一个简单的电话簿应用程序,当我在表单中键入id并单击数据库中搜索记录的按钮时,我有一个例外 javax.naming.NameNotFoundException:名称 [com.kamil.controller.PersonServlet/personDao]不受此约束 上下文找不到[com.kamil.controller.PersonServlet]。 org.apache.naming.NamingContext.lookup(NamingContext.java:819) or

嗨,我写了一个简单的电话簿应用程序,当我在表单中键入id并单击数据库中搜索记录的按钮时,我有一个例外

javax.naming.NameNotFoundException:名称 [com.kamil.controller.PersonServlet/personDao]不受此约束 上下文找不到[com.kamil.controller.PersonServlet]。 org.apache.naming.NamingContext.lookup(NamingContext.java:819) org.apache.naming.NamingContext.lookup(NamingContext.java:167) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(未知源)

这是我第一次在服务器上运行应用程序时的apepar,下一次我有一个声明:请求的资源不可用

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="test">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.kamil.model.Person</class>
    <properties>
    <property name="hibernate.connection.username" value="root"/>
    <property name="hibernate.connection.password" value=""/>
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost/phonebook?charsetEncoding=utf8"/>
    <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

    </properties>
    </persistence-unit>
</persistence>
Person.java

package com.kamil.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name="person")
@NamedQueries({@NamedQuery(name="Person.getAll",query="SELECT e FROM Person e")})
public class Person {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column
    private int personId;
    @Column
    private String firstname;
    @Column
    private String lastname;
    @Column 
    private int number;
    public int getPersonId() {
        return personId;
    }
    public void setPersonId(int personId) {
        this.personId = personId;
    }
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public Person(int personId, String firstname, String lastname, int number) {
        super();
        this.personId = personId;
        this.firstname = firstname;
        this.lastname = lastname;
        this.number = number;
    }

    Person(){}
}
PersonDao.java

package com.kamil.dao;

import com.kamil.model.Person;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;


@Stateless
public class PersonDao implements PersonDaoLocal {
    @PersistenceContext
    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");
    private EntityManager em = emf.createEntityManager();

    @Override
    public void addPerson(Person person) {
        em.persist(person);
    }

    @Override
    public void editPerson(Person person) {
        em.merge(person);
    }

    @Override
    public void deletePerson(int personId) {
        em.remove(getPerson(personId));
    }

    @Override
    public Person getPerson(int personId) {
        return em.find(Person.class, personId);
    }

    @Override
    public List<Person> getAllPersons() {
        return em.createNamedQuery("Person.getAll").getResultList();
    }

}
package com.kamil.dao;
导入com.kamil.model.Person;
导入java.util.List;
导入javax.ejb.Stateless;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.persistence;
导入javax.persistence.PersistenceContext;
@无国籍
公共类PersonDao实现PersonDao本地{
@持久上下文
私有EntityManagerFactory emf=Persistence.createEntityManagerFactory(“测试”);
私有EntityManager em=emf.createEntityManager();
@凌驾
公众人士(人){
em.person;
}
@凌驾
公众人士{
em.merge(个人);
}
@凌驾
公众人物(int personId){
em.remove(getPerson(personId));
}
@凌驾
公众人物getPerson(int personId){
返回em.find(Person.class,personId);
}
@凌驾
公共列表getAllPersons(){
返回em.createNamedQuery(“Person.getAll”).getResultList();
}
}
PersonDaoLocal.java

package com.kamil.dao;

import com.kamil.model.Person;
import java.util.List;
import javax.ejb.Local;


@Local
public interface PersonDaoLocal {

    void addPerson(Person person);

    void editPerson(Person person);

    void deletePerson(int personId);

    Person getPerson(int personId);

    List<Person> getAllPersons();

}
package com.kamil.dao;
导入com.kamil.model.Person;
导入java.util.List;
导入javax.ejb.Local;
@本地的
公共接口PersonDaoLocal{
无效添加人(人);
无效编辑人(人);
无效删除人(int personId);
Person-getPerson(int-personId);
列出getAllPersons();
}
personinfo.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Information</title>
    </head>
    <body>
        <h1>Person  Information</h1>
        <form action="./PersonServlet" method="POST">
            <table>
                <tr>
                    <td>Person ID</td>
                    <td><input type="text" name="personId" value="${person.personId}" /></td>
                </tr>
                <tr>
                    <td>First Name</td>
                    <td><input type="text" name="firstname" value="${person.firstname}" /></td>
                </tr>
                <tr>
                    <td>Last Name</td>
                    <td><input type="text" name="lastname" value="${person.lastname}" /></td>
                </tr>
                <tr>
                    <td>Number</td>
                    <td><input type="text" name="number" value="${person.number}" /></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" name="action" value="Add" />
                        <input type="submit" name="action" value="Edit" />
                        <input type="submit" name="action" value="Delete" />
                        <input type="submit" name="action" value="Search" />
                    </td>                
                </tr>            
            </table>
        </form>        
        <br>
        <table border="1">
            <th>ID</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Number</th>
            <c:forEach items="${allPersons}" var="pers">
                <tr>
                    <td>${pers.personId}</td>
                    <td>${pers.firstname}</td>
                    <td>${pers.lastname}</td>
                    <td>${pers.yearLevel}</td>
                </tr>
            </c:forEach>
        </table>  
    </body>
</html>

问询处
个人信息
个人ID
名字
姓
数

身份证件 名字 姓 数 ${pers.personId} ${pers.firstname} ${pers.lastname} ${pers.yearLevel}

您的
PersonDaoLocal
的标题看起来如何,它是如何注释的?@Local。PersonDao界面直接更新到您的问题,包括导入,这样其他读者就不必浏览您的GitHub存储库。您的
PersonDaoLocal
的标题看起来如何,它是如何注释的?@Local。这是PersonDao interfacePlease更新,可以直接更新到您的问题,包括导入,这样其他读者就不必浏览您的GitHub存储库。
package com.kamil.dao;

import com.kamil.model.Person;
import java.util.List;
import javax.ejb.Local;


@Local
public interface PersonDaoLocal {

    void addPerson(Person person);

    void editPerson(Person person);

    void deletePerson(int personId);

    Person getPerson(int personId);

    List<Person> getAllPersons();

}
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Information</title>
    </head>
    <body>
        <h1>Person  Information</h1>
        <form action="./PersonServlet" method="POST">
            <table>
                <tr>
                    <td>Person ID</td>
                    <td><input type="text" name="personId" value="${person.personId}" /></td>
                </tr>
                <tr>
                    <td>First Name</td>
                    <td><input type="text" name="firstname" value="${person.firstname}" /></td>
                </tr>
                <tr>
                    <td>Last Name</td>
                    <td><input type="text" name="lastname" value="${person.lastname}" /></td>
                </tr>
                <tr>
                    <td>Number</td>
                    <td><input type="text" name="number" value="${person.number}" /></td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input type="submit" name="action" value="Add" />
                        <input type="submit" name="action" value="Edit" />
                        <input type="submit" name="action" value="Delete" />
                        <input type="submit" name="action" value="Search" />
                    </td>                
                </tr>            
            </table>
        </form>        
        <br>
        <table border="1">
            <th>ID</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Number</th>
            <c:forEach items="${allPersons}" var="pers">
                <tr>
                    <td>${pers.personId}</td>
                    <td>${pers.firstname}</td>
                    <td>${pers.lastname}</td>
                    <td>${pers.yearLevel}</td>
                </tr>
            </c:forEach>
        </table>  
    </body>
</html>