Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final



Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

的,从Oralce数据库的student表中查询全部数据,并输出到jsp页面上

Myeclipse10

JBoss7.1.1final

Oracle 11g     ojdbc6.jar

servlet

我就做一个最简单的,在oracle中

先创建表空间和用户,并给用户授权

create tablespace jpaTbs datafile ‘jpaTbs.mdf’ size 5m;

create user stu identified by “stu” default tablespace jpaTbs;

grant connect, resource to stu;

再登录到stu用户

新建表student

column name      type

id               number        primery key

name             varchar2(20)

age              number

并添加数据10行

Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

好了,就是为了练习测试用

在myeclipse中新建web 项目jpaPro(名字随便起啦)

在src下建包com.reach.entity  这里放实体类Student.java

com.reach.servlet   这里放servlet类 StudentServlet.java

在src下建META-INF文件夹

并在其中建persistence.xml,稍后再说这个xml中的内容(也是最关键的)

Student类,注意加的注解

package com.reach.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name=”student”)
public class Student implements Serializable{


@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;

@Column
private String name;

@Column
private Integer age;

public Integer getId() {
 return id;
}

public void setId(Integer id) {
 this.id = id;
}

public String getName() {
 return name;
}

public void setName(String name) {
 this.name = name;
}

public Integer getAge() {
 return age;
}

public void setAge(Integer age) {
 this.age = age;
}
}

StudentServlet

package com.reach.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.reach.entity.Student;

public class StudentServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 EntityManagerFactory emf=null;
//EntityTransaction et=null;   因为只是用到查询,所以用不到事务,即transaction
 EntityManager em=null;
 try{
  emf=Persistence.createEntityManagerFactory(“jpaPro“);

  //上面红字的jpaPro, 是在persistence.xml里设定的

  // < persistence-unit name=”jpaPro”    后面会再说

  em=emf.createEntityManager();
  Query q=em.createQuery(“SELECT s FROM Student s”);
  List< Student> studentList=(List< Student>)q.getResultList();//注意去掉空格
 }catch(Exception e){
  e.printStackTrace();
  et.rollback();
 }
 request.setAttribute(“studentList”, studentList);
 request.getRequestDispatcher(“list.jsp”).forward(request, response);
}

public void init() throws ServletException {
}
}

前面http://blog.sina.com.cn/s/blog_6ac4b8d70101gykq.html里记录了JBoss7.11的配置
注意,在jbossHome/standalone/configuration/standalone.xml里的
jndi-name=java:jboss/myDataSource

再看项目中的persistence.xml
Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

注意第一个红线填的就是上面说的在standalone.xml里的jndi-name=java:jboss/myDataSource

第二个红线处是设置持久化类

第三个红线处要注意,最开始我没有设置这项property,结果查询结果是空集
而value处设置为value=”create”,则会清空student表
设成update就正常使用了

在WebRoot下建list.jsp,用到了jstl的c标签
Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final
Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

做一个简单的输出

所有都做完了,把项目部署到JBoss服务器
然后start服务器

再在浏览器中输入地址:http://localhost:8080/jpaPro1/StudentServlet

Myeclipse10下简单的jpa+servlet练习实例,Jboss7.1.1final

OK,困扰我两天了,终于顺利完成了

即然这个OK了,就不用Jbos6.1,以后就用7.1.1了