Java Tomcat、JPA、Eclipse-名称不在此上下文中绑定
嗨,我写了一个简单的电话簿应用程序,当我在表单中键入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.xmlJava 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
<?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>