当前位置: 首页 > 知识库问答 >
问题:

使用rest从数据库检索数据(泽西岛)

子车青青
2023-03-14

我试图用Spring jdbc和Jersey从mysql数据库中检索数据,我的代码是

Dao是getUsers()。如果我想获得所有用户,它工作良好,我可以在一个jsp上显示他们。

public List<User> getUsers() throws Exception {
    logger.info("Query DB for users");
     return jdbc.query("Select id,name,lname,username,"
        + "password,postcode,authority,email,"
        + "address,dateofbirth,city,country,"
        + "gender "
        + " from Users", new RowMapper<User>() {

        public User mapRow(ResultSet rs, int rowNum) throws SQLException {
            logger.debug(" query the user");
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            user.setLname(rs.getString("lname"));
            user.setUsername(rs.getString("username"));
            user.setPassword(rs.getString("password"));
            user.setPostcode(rs.getString("postcode"));         
            user.setAuthority(rs.getString("authority"));
            user.setEmail(rs.getString("email"));
            user.setAddress(rs.getString("address"));
            user.setDateofbirth(rs.getString("dateofbirth"));
            user.setCity(rs.getString("city"));
            user.setCountry(rs.getString("country"));
            user.setGender(rs.getString("gender"));             
            return user;
        }

    });
}

下面是资源类

   @Path("/user")
   public class UserResource {
      UserServiceWS userServicews = new UserServiceWS();

@GET
@Produces(MediaType.APPLICATION_XML)
public List<User> getUserData() throws Exception {
    return userServicews.getUsers();
}
 }
public class UserServiceWS {



@Autowired
UserDao userDao ;

public UserServiceWS() {
    try {
        getUsers();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public List<User> getUsers() throws Exception {
    return new ArrayList<User>(userDao.getUsers());
}
 }

类型异常报告

消息java.lang.NullPointerException

说明服务器遇到内部错误,导致它无法完成此请求。

注意,Apache Tomcat/7.0.68日志中提供了根本原因的完整堆栈跟踪。Apache Tomcat/7.0.68

用户类模型

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.NotEmpty;
 import org.springframework.format.annotation.DateTimeFormat;

   @XmlRootElement
   public class User {

private int id;
@NotEmpty
@Size(max = 250)
private String username;
@NotEmpty
@Size(max = 250)
private String password;

       ........... 

如果我创建一个地图,在那里添加数据并检索,我没有问题,web服务可以正常工作,没有问题。?但是如果我查询数据库,那么我有nullpointer,我缺少什么?谢谢

@Autowired

  private UserServiceWS userServicews;

并对

 @Component 
  public class UserServiceWS {


    @Autowired  UserDao userDao ;

然后我得到

HTTP状态500-MultiException有3个异常。它们是:

ServletException:一个MultiException有3个异常。他们是:1。org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[com.org.projectClient.wsService.userServiceWS]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}2。java.lang.IllegalArgumentException:尝试解析com.org.projectclient.resource.UserResource的依赖项时发现错误3。java.lang.IllegalStateException:无法在com.org.projectclient.resource.userResource上执行操作:resolve

org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:397)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:381)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:344)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:221)

根本原因

MultiException有3个异常。他们是:1。org.springframework.beans.factory.noSuchBeanDefinitionException:未找到依赖项得[com.org.projectClient.wsService.userServiceWS]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}2。java.lang.IllegalArgumentException:尝试解析com.org.projectclient.resource.UserResource的依赖项时发现错误3。java.lang.IllegalStateException:无法在com.org.projectclient.resource.userResource上执行操作:resolve

根本原因

<!-- DispatcherServlet Context: defines this servlet's request-processing 
        infrastructure -->

    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving 
        up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources 
        in the /WEB-INF/views directory -->
    <beans:bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>

    <context:component-scan base-package="com.org.projectClient" />


    <jee:jndi-lookup jndi-name="jdbc/testingdbs" id="dataSource"
        expected-type="javax.sql.DataSource">
    </jee:jndi-lookup>

    <!-- <beans:bean id="messages" class="org.springframework.context.support.ResourceBundleMessageSource"> 
        <beans:property name="basename" value="com.spring.project.demo.messages.messages.properties" 
        /> </beans:bean> -->

共有1个答案

通学真
2023-03-14

你怎么连接到DB?我想这是你的问题。

您必须修复数据库连接。

那里有问题,您无法检索您的数据。您将数据提供给jsp而没有数据提供给您的服务,这是不正常的。

最坏的情况是创建一个简单的打开/关闭数据库连接,包括密码、用户名、驱动程序详细信息等。

只是为了测试你的联系。

在创建之后,尝试一下,如果这样做有效,那么您的服务就没有DB连接了。

看这里的道曼纳格道曼纳格

有关简单的连接,请参见:简单数据库连接

或者在这里

 类似资料:
  • 我知道,如果我不穿运动衫,这是一件很容易的事,我会用这样的东西: 我也意识到我可以做到这一点,并完成它。 但是,如果我真的想转储通过POST提交的表单的所有内容,该怎么办? 问题是,我使用Jersey作为JAX-RS的实现,并使用上面的代码输出以下内容: 我猜想我的数据包含在这里:不过我不确定jaxrsquestattributes。 我知道我错过了一些东西。这应该不难吧? 更新 正如索蒂里奥斯所

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 我想从数据库中检索名称。但我总是收到错误: 数据库Java语言 它不断返回错误 android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1,字符串名称=helper.getProductNameT(cur); 有人知道我的编码哪里出错了吗?

  • 问题内容: 嗨,我已经成功地将jTable链接到JDBC数据库。但是,我在检索它们时遇到了麻烦。我希望在重新启动程序时出现保存的数据,但是它不起作用。 这是我保存文档的代码! 有什么方法可以检索JDBC数据库中的数据并通过Jtable显示它?我很抱歉提出这样一个简单的问题,但是我是Java新手,我非常需要帮助! 非常感谢! 用于加载数据的代码… 顺便说一句,我的jtable是一个3列的表,其中包含

  • 我正在尝试编写一个Jersey客户端应用程序,它可以将多部分表单数据发布到Restful Jersey服务。我需要发布一个包含数据的CSV文件和一个包含元数据的JSON文件。我使用的是Jersey客户端1.18.3。这是我的密码(为了公司保密,有些名字已经改了)。。。 现在我在最后一行得到一个编译错误,说它不能从void转换到ClientResponse。 我之前从这篇文章中得到了一些关于Rest

  • 关于我的上一个问题,我想从创建的sqlite数据库中检索ID,将其作为Intent putExtra()中的数据传递,以便将其用作PendingContent的ID。getActivity()。目前,我正在使用queryNumEntries为从我的DatabaseManager中的以下代码添加到数据库中的每个提醒设置id。类别: 并在AddActivity中调用它。班 在创建条目时,除了尝试此操作