利用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包中创建InputControllerOutputController类。

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.jspoutput.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;
    }

}
SpringMVC 注解实现区间筛选并输出直角三角形

原文地址: https://www.cveoy.top/t/topic/ozoW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录