I have created a mySQL table: student.studentInfo with:-
Int id autofill PK,
String name,
int age,
String email.
User fills up a StudentRegForm and The values of name, age and email are shown on a RegisteredStudent jsp.
I want to display contents [data elements] of the mySQL table on a jsp page.
My StudentDaoImpl:
public class StudentDaoImpl implements StudentDao {
DataSource datasource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource datasource) {
this.datasource = datasource;
this.jdbcTemplate = new JdbcTemplate(datasource);
}
@Override
public List<Student> getStudentList() {
List<Student> studentList = new ArrayList<Student>();
String sql = "select * from student.studentInfo";
JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
studentList = jdbcTemplate.query(sql, new StudentMapper());
return studentList;
}
}
The above StudentMapper method is:
public class StudentMapper implements RowMapper<Student>{
@Override
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
Student student = new Student();
student.setId( rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setEmail(rs.getString("email"));
return student;
}
}
View Resolver is set on MvcConfiguration and DataSource props are declared as @Bean:
@Configuration
@ComponentScan(basePackages = "com.anand")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations(
"/resources/");
}
@Bean
public DataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/student");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
Students fill up this Studentform.jsp:
<form action="StudentAddSuccess.htm" method=post>
${formHeading}
<p>
id <input type="text" name="id" />
</p>
<p>
Name <input type="text" name="name"/>
</p>
<p>
Age <input type="text" name="age" />
</p>
<p>
Email <input type="text" name="email" />
</p>
<p>
<input type="submit" name="submit" value="save">
</p>
</form>
Controller class is:
@Controller
public class StudentController {
@Autowired
StudentDao stdDao;
@RequestMapping(value = "/studentForm.htm", method = RequestMethod.GET)
public ModelAndView sendStudentForm() {
ModelAndView mav = new ModelAndView("studentForm");
mav.addObject("formHeading", "Student Registration Form");
mav.setViewName("studentForm");
System.out.println("student Form");
return mav;
}
//**********************************************************
@RequestMapping(value = "RegdSuccess", method = RequestMethod.POST)
public ModelAndView addStudent(@ModelAttribute("student1") Student student1) {
ModelAndView mav = new ModelAndView();
//mav.addObject("studentId", "id is:-" + student1.getId());
mav.addObject("studentName", " name is:- " + student1.getName());
mav.addObject("studentAge", " age is:-" + student1.getAge());
mav.addObject("studentEmail", "student email is:-" + student1.getEmail());
// mav.addObject("student", "student list is"+ student1);
System.out.println(" hello from RegdSuccess");
mav.setViewName("RegdSuccess");
return mav;
}
//********************************************************************
@RequestMapping( value = "RegdStudent", method = RequestMethod.GET)
public ModelAndView showStudent(@ModelAttribute("std")Student std) throws IOException{
ModelAndView mav = new ModelAndView();
List<Student> listStudent= stdDao.getStudentList();
mav.addObject("msg", "hello from Regd jsp");
//mav.addObject("listStudent", listStudent);
mav.addObject("msg",""+listStudent);
System.out.println(" hello from Regd Students controller"+std.getName());
mav.setViewName("RegdStudent");
return mav;
}
StudentDao is:
public interface StudentDao {
// create
public void createStudent(Student student);
// read
public Student getStudent(Integer id);
// Update
public void updateStudent(Student student);
// delete
public void deleteStudent(Integer id);
// List
public List<Student> getStudentList();
// save
public void save(Student student);
}
And StudentImplDao is:
public class StudentDaoImpl implements StudentDao {
StudentDaoImpl StudentDao;
DataSource datasource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource datasource) {
this.datasource = datasource;
this.jdbcTemplate = new JdbcTemplate(datasource);
}
public void doExecute() {
String sql = "SELECT * FROM STUDENT.StudentInfo";
SqlRowSet srs = jdbcTemplate.queryForRowSet(sql);
int rowCount = 0;
while (srs.next()) {
System.out.println(srs.getString("id") + "-"
+ srs.getString("name") + "-" + srs.getString("age") + "-"
+ srs.getString("email"));
}
rowCount++;
System.out.println("Number of records" + rowCount);
}
// -------------List----------------------------------------
@Override
public List<Student> getStudentList() {
List<Student> studentList = new ArrayList<Student>();
String sql = "select * from student.studentInfo";
JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
studentList = jdbcTemplate.query(sql, new StudentMapper());
return studentList;
}
// other remaining methods of StudentDao go here for the implementations
//………………………………
}
I can input name, age, email on the Studentform.jsp and those inputs are displayed on RegdSuccess.jsp, but my RegdStudent.jsp page is not displaying list records from my database as I want it to. RegdStudent.jsp is:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<head>
<title>Regd. Students</title>
</head>
<body>
hello from Regd Students jsp
<form:form>
<table>
<c:forEach items="${msg}" var="employee">
<tr>
<td><c:out value="${employee.id}" /></td>
<td><c:out value="${employee.name}" /></td>
<td><c:out value="${employee.age}" /></td>
<td><c:out value="${employee.email}" /></td>
</tr>
</c:forEach>
</table>
</form:form>
</body>
</html>
I would like to have this JSP age show all the records from the mysql database.
By doing
mav.addObject("msg",""+listStudent);
you're coercing the listStudent List to a string, making it impossible to iterate over it later in your JSP. If you change the line to:
mav.addObject("msg", listStudent);
the ${msg} object will be an iterable list.
It seems that you have no idea what works and what doesn't in your application since you dumped code for all layers. You should familiarise yourself with your IDE's debugger and learn to follow request's path to see what's going on. Narrowing down the problem drastically reduces time needed to find and fix bugs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With