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

Spring MVC应用程序

景震博
2023-03-14

大家好,我正在学习如何使用Spring,我没有MVC方面的经验。

所以我正在创建一个网站,对mysql数据库的数据进行注册、注销和更改。登录和数据库插入都准备好了,但我不能删除注册用户部分。

我的模型:

 import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

public class StudentDelete {

    @NotEmpty
    @Size(min=4, max=20)
    private String userName;

    @NotEmpty
    @Size(min=4, max=8)
    private String password;

    public String getPassword() {
        return password;
    }

    public String getUserName() {
        return userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }   
}

我的控制器:

@Controller
@SessionAttributes("student")
public class StudentController {

    @Autowired
    private StudentService studentService;
    @RequestMapping(value="/delete", method=RequestMethod.GET)
        public String delete(Model model) {         
            Student studentDelete = new Student();      
            model.addAttribute("studentDelete", studentDelete);
            return "delete";
        }

blablabla

        @RequestMapping(value="/delete", method=RequestMethod.POST)
        public String delete(@Valid @ModelAttribute("studentDelete") StudentDelete studentDelete, BindingResult result) {
            if (result.hasErrors()) {
                return "delete";
            } else {
                boolean found = studentService.findByLogin(studentDelete.getUserName(), studentDelete.getPassword());
                if (found) {        
                    studentService.deleteByLogin(studentDelete.getUserName(), studentDelete.getPassword());
                    return "successD";
                } else {                
                    return "failureD";
                }
            }
        }

我的服务和实施:

package com.github.elizabetht.service;

import com.github.elizabetht.model.Student;

public interface StudentService {
    Student save(Student student);
    boolean findByLogin(String userName, String password);
    boolean findByUserName(String userName);
    boolean deleteByLogin(String userName, String password);
}

实施:

public boolean deleteByLogin(String userName, String password) {

StudentDelete stud = studentDeleteRepository.deleteByLogin(userName, password);

    if(stud != null) {
        return true;
    }

    return false;
}

最后是StudentDeleteRepository:

package com.github.elizabetht.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.github.elizabetht.model.Student;
import com.github.elizabetht.model.StudentDelete;

@Repository("studentDeleteRepository")
public interface StudentDeleteRepository extends JpaRepository<StudentDelete, Long> {

    @Query("delete s from Student s where s.userName = :userName and s.password = :password")
    StudentDelete deleteByLogin(@Param("userName") String userName, @Param("password") String password);

}

学习积极性。JAVA

package com.github.elizabetht.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.github.elizabetht.model.Student;

@Repository("studentRepository")
public interface StudentRepository extends JpaRepository<Student, Long> {

    @Query("select s from Student s where s.userName = :userName")
    Student findByUserName(@Param("userName") String userName);

}

在我的删除中。jsp都是从以下内容开始的:

<form:form id="myForm" method="post"
                            class="bs-example form-horizontal" commandName="studentDelete">

我得到了这个错误:

java.lang.NullPointerException
    com.github.elizabetht.service.StudentServiceImpl.deleteByLogin(StudentServiceImpl.java:47)

这部分是:

StudentDelete stud = studentDeleteRepository.deleteByLogin(userName, password);

为什么save方法不会发生这种情况?

感谢任何帮助。谢谢!

共有2个答案

於宾白
2023-03-14

我认为您在评论中指出的错误:

不是托管类型:类com.github.elizabetht.model.学生删除

是因为您缺少模型类上的JPA@Entity注释:

import javax.validation.constraints.Size;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table("student")
public class StudentDelete {

    @NotEmpty
    @Size(min=4, max=20)
    private String userName;

    @NotEmpty
    @Size(min=4, max=8)
    private String password;

    public String getPassword() {
        return password;
    }

    public String getUserName() {
        return userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }   
}
史超英
2023-03-14

您的问题是下面传递的参数:

StudentDelete stud = studentDeleteRepository.deleteByLogin(userName, password);

用户名或密码为空。

因此出现了空指针异常。

将实现更改为以下格式

public boolean deleteByLogin(String userName, String password) {

if(userName == null || password == null)
return false; // it failed essentially

StudentDelete stud = studentDeleteRepository.deleteByLogin(userName, password);

    if(stud != null) {
        return true;
    }

    return false;
}
 类似资料:
  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 本文向大家介绍Springmvc ResponseBody响应json数据实现过程,包括了Springmvc ResponseBody响应json数据实现过程的使用技巧和注意事项,需要的朋友参考一下 该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如:json,xml 等,通过 Response 响应给客户端 示例 需求

  • 我试图编写完整的多部分流,从客户端使用Spring restTemplate发送多部分请求,从服务器端自动将不同部分解析为对象(我使用JAXB进行对象封送),并以多部分形式返回响应。 我能够实现几乎所有的流,但是我不能从spring Controller中用jaxb对象发送多部分响应。 试图使he FormHttpMessageConverter正确地编写部分,但这没有帮助 是否有任何方法使Spr

  • 本文向大家介绍SpringMVC程序简单实例,包括了SpringMVC程序简单实例的使用技巧和注意事项,需要的朋友参考一下 StringMVC程序简单实例 第一步:导入jar包 第二步,在WEB-INF文件夹下创建spring-servlet.xml文件。  第三步:在web.xml文件配置springmvc。  第四步:创建一个控制器。    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 在SpringMVC项目中,客户机发送一个带有序列化对象的请求,客户机本身是一个小程序,所以它不希望收到一个web页面作为响应,而是一个带有字符串对象的响应,该响应将告诉他这是成功还是失败。那么解决方案是什么呢?我想在@Controller中使用返回void的方法,或者返回不存在页面的方法?(在这两种情况下,我还想知道是否有回复给客户)

  • 我目前正在使用Springfox Swagger2来提供API UI(Swagger-UI),并使用Java配置来记录我的spring mvc应用程序。要启动我的API,最初需要大约90秒,整个扫描过程。我的项目中大约有12-15个模块和100个控制器,它是一个基于servlet的桌面应用程序 我目前只需要控制器信息,而不需要任何型号信息。我已经从启动过程中排除了模型扫描,以便启动我的API,但它

  • 我已经在谷歌上搜索了4个多小时的stackoverflow来寻找我的问题的解决方案,阅读并试图了解正在发生的事情,但我没有遇到与我的问题相关的解决方案,所以抱歉,如果这听起来像是重复的,我会尽力解释到底发生了什么,这样我就可以深入了解C3P0的内部工作。 我有一个运行在Tomcat上的SpringMVC web应用程序,其中Hibernate、JPA和C3P0是我的池资源。重新加载页面时,应用程序

  • 主要内容:1.Spi机制处理,2.调用onStarterup方法,3.DispatcherServlet类分析,4.web容器的准备阶段,5.Question这里的SpringMvc是基于注解版的, 在Servlet3.0之后注解版为主要的实现方式。 1.Spi机制处理 Servlet的规范ServletContainerInitializer的实现类上面的注解代表着这个接口的实现都是来自Spi机制的。 于是加载了所有实现WebApplicationInitializer的接口的类 2.调用on