【springmvc简单案例】

您所在的位置:网站首页 springmvc扩展点 【springmvc简单案例】

【springmvc简单案例】

2023-07-12 09:47| 来源: 网络整理| 查看: 265

在本教程中,我们将从零开始创建一个Spring MVC项目。我们将使用Maven构建工具,同时需要Java JDK和IntelliJ IDEA IDE。

 

我们将在这个项目中遵循MVC(模型-视图-控制器)设计模式,及数据存储库、服务、验证和异常处理。

 

**第1步:安装所需的软件和工具**

 

确保您已经安装了以下软件和工具:

 

1. Java JDK 8 或更高版本。

2. Apache Maven(用于构建项目)。

3. IntelliJ IDEA(用于编写代码和管理项目)。

 

**第2步:创建项目结构**

 

1. 使用IntelliJ IDEA创建一个新的Maven项目,然后选择"maven-archetype-webapp"模板。

2. 将以下内容添加到"pom.xml"文件:

 

```xml

    org.springframework

    spring-webmvc

    5.3.13

    javax.servlet

    javax.servlet-api

    4.0.1

    provided

    javax.servlet.jsp

    javax.servlet.jsp-api

    2.3.3

    provided

    jstl

    jstl

    1.2

 

    com.fasterxml.jackson.core

    jackson-databind

    2.9.0

```

 

3. 创建以下目录结构:

 

```text

src

└── main

    ├── java

    │ └── com

    │ └── example

    │ └── project

    │ ├── controller

    │ ├── model

    │ ├── repository

    │ ├── service

    │ └── validation

    └── webapp

        ├── resources

        │ └── css

        ├── WEB-INF

        │ ├── views

        │ └── web.xml

        └── index.jsp

```

 

**第3步:配置Spring MVC**

 

1. 创建一个名为"WebConfig"的新Java类,并实现"WebMvcConfigurer"接口。添加以下代码来配置视图解析器和静态资源处理。

 

```java

@Configuration

@EnableWebMvc

@ComponentScan("com.example.project")

public class WebConfig implements WebMvcConfigurer {

 

 @Bean

 public ViewResolver viewResolver() {

  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/");

 }

}

```

 

2. 创建一个名为"WebInitializer"的新Java类,继承"AbstractAnnotationConfigDispatcherServletInitializer"。在这个类中,我们将配置"DispatcherServlet"和Spring上下文。

 

```java

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

 

 @Override

 protected Class[] getRootConfigClasses() {

  return new Class[] {WebConfig.class};

 }

 

 @Override

 protected Class[] getServletConfigClasses() {

  return null;

 }

 

 @Override

 protected String[] getServletMappings() {

  return new String[] {"/"};

 }

}

```

 

**第4步:实现MVC组件**

 

1. 在"model"包下创建一个名为"Person"的Java类作为我们的数据模型。添加名为"name"和"age"的属性及其getter和setter方法。

 

```java

public class Person {

 private String name;

 private int age;

 

 // Getters and setters...

}

```

 

2. 在"repository"包下创建一个名为"PersonRepository"的Java接口。添加一些用于处理人员数据的方法,例如"findAll()"、"save()"等。

 

```java

public interface PersonRepository {

 List findAll();

 void save(Person person);

}

```

 

3. 在"repository"包下创建一个名为"InMemoryPersonRepository"的Java类,并实现"PersonRepository"接口。在这个类中,我们将使用一个Map来存储人员数据。实现上一步创建的方法。

 

```java

@Repository

public class InMemoryPersonRepository implements PersonRepository {

 private Map persons = new HashMap();

 

 @Override

 public List findAll() {

  return new ArrayList(persons.values());

 }

 

 @Override

 public void save(Person person) {

  persons.put(person.getName(), person);

 }

}

```

 

4. 在"service"包下创建一个名为"PersonService"的Java接口。添加"findAll()"和"register()"方法。

 

```java

public interface PersonService {

 List findAll();

 void register(Person person);

}

```

 

5. 在"service"包下创建一个名为"PersonServiceImpl"的Java类,并实现"PersonService"接口。通过自动装配(@Autowired)的方式注入"PersonRepository"依赖,并实现上一步创建的方法。

 

```java

@Service

public class PersonServiceImpl implements PersonService {

 @Autowired

 private PersonRepository repository;

 

 @Override

 public List findAll() {

  return repository.findAll();

 }

 

 @Override

 public void register(Person person) {

  repository.save(person);

 }

}

```

 

6. 在"validation"包下创建一个名为"PersonValidator"的Java类。添加一个"validate()"方法,用于检查"name"和"age"属性是否有效。

 

```java

@Component

public class PersonValidator {

 public void validate(Person person) {

  if (person.getName() == null || person.getName().trim().isEmpty()) {

   throw new IllegalArgumentException("Name cannot be empty");

  }

  if (person.getAge()

 @Autowired

 private PersonService personService;

 @Autowired

 private PersonValidator personValidator;

 

 @GetMapping("/")

 public String home(Model model) {

  model.addAttribute("person", new Person());

  return "index";

 }

 

 @GetMapping("/list")

 public String list(Model model) {

  model.addAttribute("persons", personService.findAll());

  return "list";

 }

 

 @PostMapping("/register")

 public String register(@ModelAttribute("person") Person person, Model model) {

  try {

   personValidator.validate(person);

   personService.register(person);

   model.addAttribute("message", "Registration successful");

  } catch (IllegalArgumentException e) {

   model.addAttribute("message", "Error: " + e.getMessage());

  }

  return home(model);

 }

}

```

 

**第5步:创建视图**

 

1. 在"WEB-INF/views"目录下创建一个名为"index.jsp"的文件。在这个文件中,添加一个表单用于输入人员的"name"和"age"。

 

```html

 Home

   

 Register

   

        Name:

       

        Age:

       

       

   

   

   

${message}

    View all persons

```

 

2. 在"WEB-INF/views"目录下创建一个名为"list.jsp"的文件。将以下内容添加到文件中以显示所有人员的列表。

 

```html

    List of Persons

   

    List of Persons

   

       

           

                Name

                Age

           

       

       

           

               

                    ${person.name}

                    ${person.age}

               

           

       

   

   

    Back to home

```

 

**第6步:测试项目**

 

1. 在IntelliJ IDEA中,右键点击项目并选择"Run"。

2. 打开浏览器,导航到"http://localhost:8080"。您应该看到我们刚刚创建的注册表单。

3. 输入姓名和年龄,然后点击"Register"。

4. 如果输入有效,您将看到"Registration successful"的消息。点击"View all persons"查看已注册人员的列表。

**总结**

在这个过程中,您创建了模型、视图、控制器、数据存储库、服务、验证和异常处理。您可以根据自己的需求扩展和调整此项目。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3