【springmvc简单案例】 |
您所在的位置:网站首页 › springmvc扩展点 › 【springmvc简单案例】 |
在本教程中,我们将从零开始创建一个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 |