用MVC写一个用form表单提交后计算日期差然后在新页面输出结果的java程序
时间: 2023-04-05 07:00:52 浏览: 62
好的,我可以回答这个问题。以下是一个用MVC写的Java程序,可以计算日期差并在新页面输出结果:
Model:
```java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DateCalculator {
private LocalDate startDate;
private LocalDate endDate;
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
public void setEndDate(LocalDate endDate) {
this.endDate = endDate;
}
public long getDaysBetween() {
return ChronoUnit.DAYS.between(startDate, endDate);
}
}
```
View:
```html
<!DOCTYPE html>
<html>
<head>
<title>Date Calculator</title>
</head>
<body>
<h1>Date Calculator</h1>
<form method="post" action="/calculate">
<label for="startDate">Start Date:</label>
<input type="date" id="startDate" name="startDate"><br><br>
<label for="endDate">End Date:</label>
<input type="date" id="endDate" name="endDate"><br><br>
<input type="submit" value="Calculate">
</form>
</body>
</html>
```
Controller:
```java
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.time.LocalDate;
@Controller
public class DateCalculatorController {
@PostMapping("/calculate")
public String calculate(@RequestParam("startDate") String startDateString,
@RequestParam("endDate") String endDateString,
Model model) {
LocalDate startDate = LocalDate.parse(startDateString);
LocalDate endDate = LocalDate.parse(endDateString);
DateCalculator calculator = new DateCalculator();
calculator.setStartDate(startDate);
calculator.setEndDate(endDate);
long daysBetween = calculator.getDaysBetween();
model.addAttribute("daysBetween", daysBetween);
return "result";
}
}
```
Result View:
```html
<!DOCTYPE html>
<html>
<head>
<title>Date Calculator Result</title>
</head>
<body>
<h1>Date Calculator Result</h1>
<p>Days between start and end date: ${daysBetween}</p>
</body>
</html>
```
这个程序使用了Spring MVC框架,当用户提交表单时,它会调用`DateCalculatorController`中的`calculate`方法来计算日期差,并将结果存储在`Model`中。然后,它会渲染`result`视图来显示结果。