我有一个控制器,我可以从数据库中验证用户并检索文件列表(是文件名)。数据库有两个表,一个是用户,另一个是文件。它可以正确验证用户,但甚至都不适用于被归档的方法。我知道变量filedao是空的,但是是否应该像Userdao Whis一样执行它吗?
在" user person"行中,= userdao.findbyName(用户名); "变量userdao也为null,不是吗?但是,这个方法正确调用了该方法,并使用用户名的存在并带回用户验证用户。但是,以相同的方式,我试图创建一个变量文件,并发送fileDao将属于矩阵/ID的文件发送给给定的文件。我不明白的是,为什么它在Userdao中不显示任何错误,而是在filedao中?
它向我显示了java.lang.NullPointerException
错误。有人可以帮我吗?
private UserDAO userDAO;
private FileDAO fileDAO;
@RequestMapping("/home")
public String validate(@RequestParam("username") String username,
@RequestParam("password") String password, Model model) {
User person = userDAO.findByname(username);
File userfiles = null;
if(person.getPassword().toString().equals(password)) {
String PersonName = person.getPersonname();
model.addAttribute("personname", PersonName);
//
System.out.println("Here the file will be printed and the matricula is");
Long matricula = Long.parseLong(username);
//Userfiles = (List<File>) FileDAO.findByMatricula(matricula);
userfiles = fileDAO.findByMatricula(matricula);
//System.out.println(FileDAO.findByMatricula(matricula));
model.addAttribute("Userfiles", userfiles);
return "Home_e65";
} else {
return "e45_login";
}
}
我的filedao类是这样的:
package com.anjan.udharan.repository;
import java.util.List;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import com.anjan.udharan.model.File;
@Repository
public class FileDAO {
private class FileMapper implements RowMapper<File> {
public File mapRow(ResultSet row, int rowNum) throws SQLException {
File file = new File();
file.setID(row.getLong("file_id"));
file.setFile_name(row.getString("file_name"));
file.setMatricula(row.getLong("id"));
file.setFile_initial_date(row.getString("file_initial_date"));
file.setFile_final_date(row.getString("file_final_date"));
return file;
}
}
@Autowired
private JdbcTemplate jdbcTemplate;
public File findByMatricula(Long id) {
String sql = "select * from files where id=?";
File file = jdbcTemplate.queryForObject(sql, new
Object[]{id}, new FileMapper());
return file;
}
public List<File> findAll() {
String sql = "select * from files";
List<File> userList = jdbcTemplate.query(sql,
ParameterizedBeanPropertyRowMapper.newInstance(File.class));
return userList;
}
}
和我的file.java就是这样:
package com.anjan.udharan.model;
public class File {
private Long file_id=null;
private Long id=null;
private String file_name=null;
private String file_initial_date=null;
private String file_final_date=null;
public File(){
}
public File(String file_name, Long id, String file_initial_date, String file_final_date){
this.id = id ;
this.file_name = file_name;
this.file_initial_date = file_initial_date;
this.file_final_date = file_final_date;
}
public Long getID() {
return file_id;
}
public void setID(Long matricula) {
this.file_id = matricula;
}
public Long getMatricula() {
return id;
}
public void setMatricula(Long matricula) {
this.id = matricula;
}
public String getFile_name() {
return file_name;
}
public void setFile_name(String file_name) {
this.file_name = file_name;
}
public String getFile_initial_date() {
return file_initial_date;
}
public void setFile_initial_date(String file_initial_date) {
this.file_initial_date = file_initial_date;
}
public String getFile_final_date() {
return file_final_date;
}
public void setFile_final_date(String file_final_date) {
this.file_final_date = file_final_date;
}
}
我的配置类是:
package com.anjan.udharan.config;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
@Configuration
@EnableWebMvc
@ComponentScan
(basePackages = {"com.anjan.udharan.*"})
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver jspViewResolver(){
InternalResourceViewResolver resolver = new
InternalResourceViewResolver();
resolver.setViewClass(JstlView.class);
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("/resources/css/");
registry.addResourceHandler("/img/**").addResourceLocations("/resources/img/"); // equivale al dir src/main/webapp/resources/img en la vista de files
registry.addResourceHandler("/js/**").addResourceLocations("/resources/js/");
registry.addResourceHandler("/fonts/**").addResourceLocations("/resources/fonts/");
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/alumnos");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
,而不是@Autowired让我们尝试一下继承的JDBCTEMPLATE@repository公共类FILEDAO扩展了jdbctemplate缺少@AutowiewD for dao