Notice: Undefined index: in /data/phpspider/phplib/misc.function.php on line 226
Sql web应用程序-JSP中搜索查询中的java.lang.NullPointerException_Sql_Jsp_Jpa_Web Applications - Fatal编程技术网

Sql web应用程序-JSP中搜索查询中的java.lang.NullPointerException

Sql web应用程序-JSP中搜索查询中的java.lang.NullPointerException,sql,jsp,jpa,web-applications,Sql,Jsp,Jpa,Web Applications,我试图访问我的数据库获取信息,但它一直抛出一个空异常 我调用了对象和技术人员对象/ addTech.jsp: <%@page import="com.example.backend.BackendFactory"%> <%@page import="java.util.ArrayList"%> <%@page import="com.example.model.*"%> <%@ page language="java" contentType="

我试图访问我的数据库获取信息,但它一直抛出一个空异常

我调用了对象和技术人员对象/

addTech.jsp:

    <%@page import="com.example.backend.BackendFactory"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.example.model.*"%>
<%@ page language="java" contentType="text/html; charset=windows-1255"
    pageEncoding="windows-1255"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Adding Tech</title>
</head>
<%
    String TechId, TechName, TechUserName, TechPass, TechPassVer, TechRank, TechSecQ, TechSecA, TechEmail, TechPhone;
    TechName = request.getParameter("TechName");
    TechUserName = request.getParameter("TechUserName");
    TechPass = request.getParameter("TechPass");
    TechPassVer = request.getParameter("TechPassVer");
    TechRank = request.getParameter("TechRank");
    TechSecQ = request.getParameter("TechSecQ");
    TechSecA = request.getParameter("TechSecA");
    TechEmail = request.getParameter("TechEmail");
    TechPhone = request.getParameter("TechPhone");
    if (TechName != null && TechUserName != null && TechPass != null
            && TechPassVer != null && TechRank != null
            && TechSecQ != null && TechSecA != null
            && TechEmail != null && TechPhone != null)
    {
        Technician t = new Technician(TechName, TechUserName, TechPass,
                new ArrayList<Call>(), TechnicianRank.Beginner,
                TechSecQ, TechSecA, TechPhone, TechEmail, (float) 0.0);
        BackendFactory.getInstance().addTechnician(t);
    }
%>
<body>
    <h1>Adding Technican</h1>
    <form name="tempForm" action="addTech.jsp" method="get">
        <table align="left" border="0" cellpadding="1" cellspacing="1"
            style="width: 500px;">
            <tbody>
                <tr>
                    <td><strong style="color: rgb(255, 0, 0);"><u>Tech
                                Details:</u></strong></td>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Id:</td>
                    <td><input name="TechId" readonly="readonly" type="text"
                        value=<%out.print(BackendFactory.getInstance().getTechnicianCurrentId());%> /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Name:</td>
                    <td><input name="TechName" type="text" value="Your first name" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>User name:</td>
                    <td><input name="TechUserName" type="text"
                        value="Your last name" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Password:</td>
                    <td><input name="TechPass" type="password" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Verify Password:</td>
                    <td><input name="TechPassVer" type="password" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Rank:</td>
                    <td><input name="TechRank" readonly="readonly" type="text"
                        value="Beginer" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Security Q:</td>
                    <td><input name="TechSecQ" size="30" type="text"
                        value="Whats your grandmother birth?" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Security A:</td>
                    <td><input name="TechSecA" size="30" type="text"
                        value="Dont remember..." /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Email:</td>
                    <td><input name="TechEmail" type="text"
                        value="example@gmail.com" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Phone:</td>
                    <td><input name="TechPhone" type="text" value="0123456789" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                    <td><input name="addTech" type="submit" value="Submit" /></td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

添加技术
添加技术员
科技
详细信息:
身份证件:
姓名:
用户名:
密码:
验证密码:
排名:
安全问题:
保安A:
电邮:
电话:
addCall.jsp:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="com.google.gwt.dom.client.SelectElement"%>
<%@page import="sun.reflect.CallerSensitive"%>
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<html>
<%@page import="com.example.model.*"%>
<%@page import="com.example.backend.BackendFactory"%>
<%@page import="com.example.backend.ServerBackend"%>
<%@ page language="java" contentType="text/html; charset=windows-1255"
    pageEncoding="windows-1255"%>

<head>
<meta http-equiv="Content-Type"
    content="text/html; charset=windows-1255">
<title>Insert title here</title>
</head>
<body>
    <h1>Adding Call
        <%/*out.print(backend.findTechByName("sabag"));*/%>

        </h1>
    <form name="tempForm" action="addCall.jsp" method="get">
        <%!ServerBackend backend = BackendFactory.getInstance();%>
        <%
            /*backend.addTechnician(new Technician());*/
            //
            String desc, tech, techRank, ClientAddress, ClientFirst, ClientLast;
            desc = request.getParameter("desc");
            tech = request.getParameter("tech");
            ClientAddress = request.getParameter("ClientAddress");
            ClientFirst = request.getParameter("ClientFirst");
            ClientLast = request.getParameter("ClientLast");
            Technician t=null ;
            if (tech != null)
            {
                try
                {
                    t=backend.findTechByName(tech);
                } catch (Exception e)
                {
                    t = new Technician();
                    t.setName(tech);
                    backend.addTechnician(t);
                }
            }
            if (desc != null && tech != null && ClientAddress != null
                    && ClientFirst != null && ClientLast != null)
            {
                Call call = new Call();
                call.setDescription(desc);
                call.setCaller(new Client(ClientFirst + ClientLast,
                        new Address(ClientAddress, ClientAddress,
                                ClientAddress, 45)));
                call.setTechnician(t);
                backend.addCall(call);
            }
            /**/
        %>
        <table align="left" border="0" cellpadding="1" cellspacing="1"
            style="width: 500px;">
            <tbody>
                <tr>
                    <td><strong style="color: rgb(255, 0, 0);"><u>Call
                                Details:</u></strong></td>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Id:</td>
                    <td>
                        <div>
                            <input name="id" readonly="readonly" type="text"
                                value=<%out.print(backend.getCallCurrentId());%> />
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Description:</td>
                    <td><textarea name="desc"></textarea></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Technician:</td>
                    <td><select name="tech" size="1">
                            <%
                                try
                                        {
                                        List<String> lst=backend.getAllTechsNames();
                                        for(String s : lst) {
                            %>
                            <option value="100">
                                <%
                                    out.print(s);
                                %>
                            </option>
                            <%
                                } 
                                        }
                                        catch(Exception e)
                                        {
                            %>
                            <option>
                                <%
                                    out.println("fdghjk");
                                %>
                            </option>
                            <%
                                }
                            %>
                    </select>&nbsp;</td>
                </tr>
                <tr>
                    <td><strong><u><span
                                style="color: rgb(255, 0, 0);">Caller Details:</span></u></strong></td>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>First name</td>
                    <td><input name="ClientFirst" type="text"
                        value="Your first name" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Last name</td>
                    <td><input name="ClientLast" type="text"
                        value="Your last name" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>Address</td>
                    <td><input name="ClientAddress" type="text"
                        value="Your address" /></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td>&nbsp;</td>
                    <td><input name="addCall" type="submit" value="Submit" /></td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

在此处插入标题
添加呼叫
调用
详细信息:
身份证件:
说明:
技术员:
来电者详细信息:
名字
姓
住址
最重要的是: 数据库后端代码:

package com.example.backend;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import com.example.model.Call;
import com.example.model.CallStatus;
import com.example.model.SparePart;
import com.example.model.Technician;
import com.example.model.ThingToDo;

public class DBbackend implements Backend
{
    private EntityManagerFactory emf = null;
    private EntityManager em = null;
    private String PERSISTENCE_UNIT_NAME = "transactions-optional";

    //
    public DBbackend()
    {
        emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        em = emf.createEntityManager();
    }

    private void insert(Object obj) throws Exception
    {
        em.getTransaction().begin();
        em.persist(obj);
        try
        {
            em.getTransaction().commit();
        } catch (Exception e)
        {
            em.clear();
            throw e;
        }
    }

    @Override
    public int getNextCallId()
    {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void removeCall(int id) throws Exception
    {
        // TODO Auto-generated method stub

    }

    @Override
    public ArrayList<Call> getCallsByTech(Technician t) throws Exception
    {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void updateCall(Call call) throws Exception
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void save()
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void addCall(Call call) throws Exception
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void addTechnician(Technician technician) throws Exception
    {
        // TODO Auto-generated method stub
        insert(technician);
    }

    @Override
    public Technician getTechnicianByUserName(String userName) throws Exception
    {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Call getCall(int id) throws Exception
    {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void addCallToTech(Call call, Technician t) throws Exception
    {
        // TODO Auto-generated method stub
        call.setTechnician(t);
        insert(call);
    }

    @Override
    public Technician findTechByName(String name) throws Exception
    {
        // TODO Auto-generated method stub
        Query q = em.createQuery(
                "SELECT technician FROM Technician technician "
                        + "WHERE technician.name = :Name ", Technician.class);
        q.setParameter("Name", name);
        return (Technician) q.getSingleResult();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<String> getAllTechsNames() throws Exception
    {
        // TODO Auto-generated method stub
        TypedQuery<Technician> query =
                em.createQuery("SELECT p FROM Technician p", Technician.class);
            List<Technician> results = query.getResultList();
        List<String> nameList = new ArrayList<String>();
        for (Technician item : results)
            nameList.add(item.getName());

        return nameList;
    }

    @Override
    public ArrayList<String> blabla() throws Exception
    {
        // TODO Auto-generated method stub
        Query q = em.createQuery(
                "SELECT technician FROM Technician technician",
                Technician.class);
        @SuppressWarnings("unchecked")
        List<Technician> lst = q.getResultList();
        ArrayList<String> nameList = new ArrayList<String>();
        for (Technician item : lst)
            nameList.add(item.getName());
        return nameList;
    }

    @Override
    public int getTechnicianCurrentId()
    {
        // TODO Auto-generated method stub
        return Technician.getIdCount();
    }

    @Override
    public int getCallCurrentId()
    {
        // TODO Auto-generated method stub
        return Call.getIdCount();
    }

}
package com.example.backend;
导入java.util.ArrayList;
导入java.util.List;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.persistence;
导入javax.persistence.Query;
导入javax.persistence.TypedQuery;
导入com.example.model.Call;
导入com.example.model.CallStatus;
导入com.example.model.SparePart;
导入com.example.model.technology;
导入com.example.model.ThingToDo;
公共类DBbackend实现后端
{
私有EntityManagerFactory emf=null;
私有EntityManager em=null;
私有字符串持久性\u单元\u NAME=“事务可选”;
//
公共DBbackend()
{
emf=Persistence.createEntityManagerFactory(Persistence\u UNIT\u NAME);
em=emf.createEntityManager();
}
私有void插入(对象obj)引发异常
{
em.getTransaction().begin();
em.persist(obj);
尝试
{
em.getTransaction().commit();
}捕获(例外e)
{
em.clear();
投掷e;
}
}
@凌驾
public int getNextCallId()
{
//TODO自动生成的方法存根
返回0;
}
@凌驾
public void removeCall(int-id)引发异常
{
//TODO自动生成的方法存根
}
@凌驾
公共ArrayList getCallsByTech(技术人员t)引发异常
{
//TODO自动生成的方法存根
返回null;
}
@凌驾
public void updateCall(调用)引发异常
{
//TODO自动生成的方法存根
}
@凌驾
公共作废保存()
{
//TODO自动生成的方法存根
}
@凌驾
public void addCall(Call Call)引发异常
{
//TODO自动生成的方法存根
}
@凌驾
公共无效addTechnician(Technician Technician)引发异常
{
//TODO自动生成的方法存根
插入(技术员);
}
@凌驾
公共技术人员getTechnicianByUserName(字符串用户名)引发异常
{
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共调用getCall(int id)引发异常
{
//TODO自动生成的方法存根
返回null;
}
@凌驾
public void addCallToTech(呼叫,技师t)引发异常
{
//TODO自动生成的方法存根
call.setTechnician(t);
插入(调用);
}
@凌驾
公共技师findTechByName(字符串名称)引发异常
{
//TODO自动生成的方法存根
查询q=em.createQ
 if(  variable_could_be_null.equals(variable_known_to_not_be_null) )
 if(  variable_known_to_not_be_null.equals(variable_could_be_null) )
if(variable_could_be_null!=null)
{
  ...
}