Java 在Spring MVC中未向显示数据库详细信息
该项目使用MySql在JavaSpringMVC上运行。 显示不工作(下图),可能是因为函数没有返回查询结果,或者是因为其他原因。 下面是用于在数据库上运行查询并返回结果的函数。此函数是“User.java”文件的成员Java 在Spring MVC中未向显示数据库详细信息,java,mysql,spring,jsp,spring-mvc,Java,Mysql,Spring,Jsp,Spring Mvc,该项目使用MySql在JavaSpringMVC上运行。 显示不工作(下图),可能是因为函数没有返回查询结果,或者是因为其他原因。 下面是用于在数据库上运行查询并返回结果的函数。此函数是“User.java”文件的成员 公共列表getUsers() { 返回jdbcTemplate.query(“从学生中选择*”,新建行映射器() { 公共用户mapRow(ResultSet rs,int row)抛出SQLException { 用户u=新用户(); u、 setUserName(
公共列表getUsers()
{
返回jdbcTemplate.query(“从学生中选择*”,新建行映射器()
{
公共用户mapRow(ResultSet rs,int row)抛出SQLException
{
用户u=新用户();
u、 setUserName(rs.getString(1));
u、 设置密码(rs.getString(2));
u、 setName(rs.getString(3));
u、 setBranch(rs.getString(4));
u、 setM1(rs.getInt(5));
u、 setM2(rs.getInt(6));
u、 setM3(rs.getInt(7));
u、 setAggregate(rs.getInt(8));
u、 setGrade(rs.getString(9));
返回u;
}
});
}
这将返回到“HomeController.java”,其实现如下所示
@RequestMapping("/adminHome")
public ModelAndView adminHome(User user){
List<User> list= user.getUsers();
return new ModelAndView("adminHome","list",list);
}
@RequestMapping(“/adminHome”)
公共模型和视图管理员主页(用户){
List=user.getUsers();
返回新模型和视图(“adminHome”、“list”、“list”);
}
相应的JSP是“adminHome.JSP”,如下所示
<body>
<h3>Hi ${name}</h3>
<h1>USERS List</h1>
<table border="2" width="70%" cellpadding="2">
<tr><th>Username</th><th>Password</th><th>Name</th><th>Mobile</th>
<th>Branch</th><th>Marks1</th><th>Marks2</th><th>Marks3</th>
<th>Aggregate</th><th>Grade</th><th>Edit</th>
<th>Delete</th></tr>
<c:forEach var="u" items="${list}">
<tr>
<td>${u.username}</td>
<td>${u.password}</td>
<td>${u.name}</td>
<td>${u.mobile}</td>
<td>${u.branch}</td>
<td>${u.marks1}</td>
<td>${u.marks2}</td>
<td>${u.marks3}</td>
<td>${u.aggregate}</td>
<td>${u.grade}</td>
<td><a href="editemp/${u.username}">Edit</a></td>
<td><a href="deleteemp/${u.username}">Delete</a></td>
</tr>
</c:forEach>
</table>
<br/>
<a href="register">Add New User</a>
</body>
你好${name}
用户列表
UsernamePasswordNameMobile
分支标记1标记2标记3
聚合编辑
删除
${u.username}
${u.password}
${u.name}
${u.mobile}
${u.branch}
${u.marks1}
${u.marks2}
${u.marks3}
${u.aggregate}
${u.grade}
@RequestMapping(value=“/user”,method=RequestMethod.POST)
公共字符串用户(@validateduseruser,Model-Model,Locale)
{
U=user.getUserName();
字符串s1=“密码”;
String s2=“name”;
字符串p=“X”;
尝试
{
最后一个字符串selectQuery=“select*from student,其中username=”+U+”;
Map Map=jdbcTemplate.queryForMap(selectQuery);
Set=map.entrySet();
迭代器itr=set.Iterator();
while(itr.hasNext())
{
//转换为Map.Entry,这样我们就可以分别获得键和值
Map.Entry=(Map.Entry)itr.next();
if(entry.getKey().equals(s1))
{
p=entry.getValue().toString();
系统输出println(p);
}
if(entry.getKey()等于(s2))
{
NAME=entry.getValue().toString();
系统输出println(p);
}
}
}
捕获(异常e2)
{
System.out.println(“登录时引发异常(用户)!!!”;//在sql查询中不包含按用户名搜索返回NULL的情况
}
字符串dest=“user”;
if(user.getUserName().equals(“admin”)和&user.getPassword().equals(p))
{
dest=“adminHome”;
System.out.println(“请求的管理页面”);
model.addAttribute(“name”,name);
}
else if(user.getUserName().equals(U)和&user.getPassword().equals(p))
{
System.out.println(“请求的用户页面”);
model.addAttribute(“name”,name);
}
其他的
{
dest=“errLogin”;//重定向到errLogin.jsp
System.out.println(“请求的错误登录页面,locale=“+locale”);
日期=新日期();
DateFormat DateFormat=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);
字符串formattedDate=dateFormat.format(日期);
model.addAttribute(“serverTime”,formattedDate);
model.addAttribute(“消息”,“无效登录凭据!!!重试”);
}
返回目的地;
}
您没有将其正确重定向到/adminHome
服务。相反,它将重定向到adminHome.jsp
页面
如果要将其从/user
服务重定向到/adminHome
,而不是返回“adminHome”代码>,请执行以下操作-
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String user(@Validated User user, Model model,Locale locale) {
// your code and use return line as follows
return "redirect:adminHome";
}
当您使用字符串dest
作为最终返回语句时,请将其更新为“重定向:
”
这将调用您的/adminHome
服务,一切正常。您想显示列表,但映射器返回一个用户…您调试了代码吗?@Stultuske是的,我想显示列表,但映射器没有返回任何内容,是的,我已经调试了。从映射器中提取您的查询,并检查是否实际返回结果。您正在根据屏幕截图使用/user
url,控制器中的映射为/adminHome
。确实调用了正确的服务吗?重定向现在是正确的,谢谢,但现在返回jdbcTemplate。查询(“从学生中选择*”,新的RowMapper()
引发空指针异常,页面正在崩溃。请检查jdbcTemplate
是否正确配置了数据源。您必须对其进行调试。
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String user(@Validated User user, Model model,Locale locale)
{
U = user.getUserName();
String s1 = "password";
String s2 = "name";
String p = "X";
try
{
final String selectQuery = "select * from student where username='"+U+"'";
Map<?, ?> map = jdbcTemplate.queryForMap(selectQuery);
Set set = map.entrySet();
Iterator itr=set.iterator();
while(itr.hasNext())
{
//Converting to Map.Entry so that we can get key and value separately
Map.Entry entry=(Map.Entry)itr.next();
if(entry.getKey().equals(s1))
{
p = entry.getValue().toString();
System.out.println(p);
}
if(entry.getKey().equals(s2))
{
NAME = entry.getValue().toString();
System.out.println(p);
}
}
}
catch(Exception e2)
{
System.out.println("Exception Raised while Login(user)!!!"); //not inclusion of case of NULL return by username search in the sql query
}
String dest="user";
if(user.getUserName().equals("admin") && user.getPassword().equals(p))
{
dest = "adminHome";
System.out.println("Admin Page Requested");
model.addAttribute("name", NAME);
}
else if(user.getUserName().equals(U) && user.getPassword().equals(p))
{
System.out.println("User Page Requested");
model.addAttribute("name", NAME);
}
else
{
dest = "errLogin"; //redirects to errLogin.jsp
System.out.println("Err Login Page Requested, locale = " + locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate);
model.addAttribute("message", "Invalid login credentials !!! Try Again");
}
return dest;
}
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String user(@Validated User user, Model model,Locale locale) {
// your code and use return line as follows
return "redirect:adminHome";
}