SpringMVC 注解实现区间筛选并输出直角三角形
利用SpringMVC(使用注解)和JSP实现区间筛选并输出直角三角形
本示例使用SpringMVC注解和JSP实现一个功能:在页面输入起始区间、结束区间和筛选条件,找出区间内所有能被筛选条件整除的数,以及个位数与筛选条件相同的数,并以直角三角形形式在页面输出。
1. 配置文件
1.1 web.xml
在web.xml中配置DispatcherServlet:
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
1.2 spring-mvc.xml
在classpath下创建spring-mvc.xml文件,配置组件扫描和视图解析器:
<context:component-scan base-package='com.example.controller' />
<bean class='org.springframework.web.servlet.view.InternalResourceViewResolver'>
<property name='prefix' value='/WEB-INF/views/' />
<property name='suffix' value='.jsp' />
</bean>
2. 控制器
在com.example.controller包中创建InputController和OutputController类。
2.1 InputController
InputController用于显示输入页面,并接收用户输入的数据。
@Controller
public class InputController {
@RequestMapping(value = '/input', method = RequestMethod.GET)
public String input(Model model) {
model.addAttribute('inputForm', new InputForm());
return 'input';
}
@RequestMapping(value = '/input', method = RequestMethod.POST)
public String submit(@ModelAttribute InputForm inputForm, Model model) {
model.addAttribute('inputForm', inputForm);
return 'redirect:/output?start=' + inputForm.getStart() + '&end=' + inputForm.getEnd() + '&filter=' + inputForm.getFilter();
}
}
2.2 OutputController
OutputController用于根据用户输入的数据计算并显示符合条件的数。
@Controller
public class OutputController {
@RequestMapping(value = '/output', method = RequestMethod.GET)
public String output(@RequestParam int start, @RequestParam int end, @RequestParam int filter, Model model) {
List<Integer> numbers = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (i % filter == 0 || i % 10 == filter) {
numbers.add(i);
}
}
model.addAttribute('numbers', numbers);
return 'output';
}
}
3. 输入页面和输出页面
在WEB-INF/views目录下创建input.jsp和output.jsp。
3.1 input.jsp
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>输入页面</title>
</head>
<body>
<form action='${pageContext.request.contextPath}/input' method='post'>
<label for='start'>起始区间:</label>
<input type='number' id='start' name='start' required>
<br>
<label for='end'>结束区间:</label>
<input type='number' id='end' name='end' required>
<br>
<label for='filter'>筛选过滤条件:</label>
<input type='number' id='filter' name='filter' min='2' max='9' required>
<br>
<button type='submit'>提交</button>
</form>
</body>
</html>
3.2 output.jsp
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>输出页面</title>
</head>
<body>
<%
List<Integer> numbers = (List<Integer>) request.getAttribute('numbers');
if (numbers != null && !numbers.isEmpty()) {
int size = numbers.size();
int rows = (int) Math.ceil(Math.sqrt(size));
int index = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
if (index < size) {
out.print(numbers.get(index) + ' ');
index++;
}
}
out.print('<br>');
}
} else {
out.print('没有符合条件的数。');
}
%>
</body>
</html>
4. 表单模型
在com.example.form包中创建InputForm类,用于接收用户输入的数据。
public class InputForm {
private int start;
private int end;
private int filter;
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getFilter() {
return filter;
}
public void setFilter(int filter) {
this.filter = filter;
}
}
原文地址: https://www.cveoy.top/t/topic/ozoW 著作权归作者所有。请勿转载和采集!