Javaservlet和用于通信mysql的实体管理器工厂方法

Javaservlet和用于通信mysql的实体管理器工厂方法,java,servlets,Java,Servlets,我有一个Javaservlet和实体管理器工厂 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response

我有一个Javaservlet和实体管理器工厂

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
        this.setLevels(request);
如果使用该行,则servlet不起作用

//this.emf = Persistence.createEntityManagerFactory("projectPU");
servlet方法继续

        out.println("this is a html content ....");
    }
}
如何在servlet中使用Persistence.createEntityManagerFactory(“projectPU”)?谢谢。

如上文所述,如果您不想使用任何框架,您可以这样做:

我创建了一个名为DataBroker的类,这个类包含EntityManager,可以持久化实体或向数据库发送查询

import javax.persistence.EntityManager;
import javax.persistence.Persistence;

public class DataBroker<T> {

    private EntityManager em;

    public DataBroker() {
        if(em == null) {
            em = Persistence.createEntityManagerFactory("ProjectPU").createEntityManager();
        }
    }

    public void saveInput(T t) {
        em.merge(t);
    }


}
import javax.persistence.EntityManager;
导入javax.persistence.persistence;
公共类数据代理{
私人实体管理者;
公共数据代理(){
if(em==null){
em=Persistence.createEntityManager工厂(“ProjectPU”).createEntityManager();
}
}
公共无效保存输入(T){
em.merge(t);
}
}
现在,例如一个PersonServlet:

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import de.professional_webworkx.database.DataBroker;
import de.professional_webworkx.model.Person;

@WebServlet(urlPatterns = {"/personServlet"})
public class PersonServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 318982491390578805L;

    private DataBroker<Person> dataBroker = new DataBroker<>();

    public PersonServlet() {
        super();
    }
    protected void processRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // do something with the user input from the jsp file
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        processRequest(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        processRequest(req, resp);
    }



}
import java.io.IOException;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入de.professional_webworkx.database.DataBroker;
导入de.professional_webworkx.model.Person;
@WebServlet(urlPatterns={“/personServlet”})
公共类PersonServlet扩展了HttpServlet{
/**
* 
*/
私有静态最终长serialVersionUID=31898249139578805L;
private-DataBroker-DataBroker=new-DataBroker();
公共人员服务(){
超级();
}
受保护的无效processRequest(HttpServletRequest-req,HttpServletResponse-resp)引发ServletException,IOException{
//对jsp文件中的用户输入执行一些操作
}
@凌驾
受保护的无效数据集(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException{
processRequest(请求、响应);
}
}
但这是对的,这些框架为您处理所有这些问题,您可以专注于您的业务逻辑或其他方面;)


帕特里克

首先,不要手写servlet;使用像SpringMVC这样的框架,它已经为您处理了所有这些。