Spring mvc 我在我的SpringMVC项目中得到了NullPointerException?
我有一个基于SpringMVC框架的简单库项目。我将向我的author表中添加一个新的author,但是我得到了NullPointerException。 我在下面提供了与此函数相关的添加类。有人能说什么不对吗Spring mvc 我在我的SpringMVC项目中得到了NullPointerException?,spring-mvc,Spring Mvc,我有一个基于SpringMVC框架的简单库项目。我将向我的author表中添加一个新的author,但是我得到了NullPointerException。 我在下面提供了与此函数相关的添加类。有人能说什么不对吗 @Controller public class AuthorController { @RequestMapping("/addAuthor") protected ModelAndView addAuthor() throws Exception { ModelAndVie
@Controller
public class AuthorController {
@RequestMapping("/addAuthor")
protected ModelAndView addAuthor() throws Exception {
ModelAndView model = new ModelAndView("addAuthor");
return model;
}
@RequestMapping("/addAuthorExecution")
protected ModelAndView addAuthorExecution(
@RequestParam("authorName") String authorName) throws Exception {
ApplicationContext cnx = new ClassPathXmlApplicationContext("spring.xml");
AuthorService authorService = (AuthorService) cnx.getBean("authorService");
authorService.addAuthor(authorName);
ModelAndView model = new ModelAndView("adminFunctionsPage");
model.addObject("successMsg", "Your request has been processed Successfully.");
return model;
}
}
服务类别:
public class AuthorService {
@Autowired
Author author;
@Autowired
AuthorDAO authorDAO;
public void addAuthor(String authorName) throws ClassNotFoundException,
SQLException {
AuthorDAO authorDAO = new AuthorDAO();
authorDAO.addAuthor(authorName);
}
}
DAO类:
public class AuthorDAO extends JdbcDaoSupport {
public void addAuthor(String authorName) {
String sql = "insert into tbl_author (authorName) values (?)";
this.getJdbcTemplate().update(sql, new Object[] { authorName });
}
private static final class AuthorMapper implements RowMapper<Author> {
@Autowired
Author author;
@Override
public Author mapRow(ResultSet rs, int rowNum) throws SQLException {
author.setAuthorId(rs.getInt("authorId"));
author.setAuthorName(rs.getString("authorName"));
return author;
}
}
}
XML:
你好,你能试试吗
<property name="url" value="jdbc:mysql://localhost:3306/library"/>
而不是
<property name="url" value="jdbc:mysql://localhost/library"/>
这将是一个问题 几个错误
Auther
。这是错误的AuthorService
addAuthor
方法内创建AuthorDAO
的对象。您应该注意,不应手动构造AutherDAO
,因为该类AutherDAO.AuthorMapper
中有autowired
对象可用。通过手动构造它们,这些自动连接将不会连接到对象 @Service
public class AuthorService {
@Autowired
AuthorDAO authorDAO;
public void addAuthor(String authorName) throws Exception {
authorDAO.addAuthor(authorName);
}
}
错误出现在AuthorDAO的第32行。这条线是什么?你推断出什么?你不认为行映射程序应该为每一行创建一个新的作者,而不是每次调用它时都修改同一个(不是)自动连接的作者吗?另一方面,既然已经有了AuthorDAO,为什么还要构造一个AuthorDAO呢?它是由Spring在服务中自动连接的。问题是我的服务类中的附加AuthorDAO。谢谢你的评论。
<property name="url" value="jdbc:mysql://localhost:3306/library"/>
<property name="url" value="jdbc:mysql://localhost/library"/>
@Service
public class AuthorService {
@Autowired
AuthorDAO authorDAO;
public void addAuthor(String authorName) throws Exception {
authorDAO.addAuthor(authorName);
}
}