Фильтр в Сервлетах
исходя из введенных данных в адресной строке,должен вызываться нужный сервет,фитьтр должен проверять есть является ли введенный знак(+ - / * sin cos и т д) верным. Проблема в том,что программа не заходит в фильтр, а переходит сразу в нужный сервлет.
ввожу в адресную строку http://localhost:9999/disp?number1=0&sign=cos
выводит верно,но без захода в сервлет. Я не понимаю,где должна быть проверка на то,верно или введен знак, в сервлете или в фильтре.
Если сделать в Диспетчере сервлетов переход в фильтр,то он выдает ошибку,что Фильтр это не сервлет.
public class DispetcherSevlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sign = req.getParameter("sign");
PrintWriter writer = resp.getWriter();
switch (sign) {
case "+":
case "-":
case "*":
case "/":
req.getServletContext().getRequestDispatcher("/filter/basis").forward(req, resp);
break;
case "cos":
case "sin":
case "tan":
case "cotan":
req.getServletContext().getRequestDispatcher("/filter/mathe").forward(req, resp);
break;
case ">":
req.getServletContext().getRequestDispatcher("/filter/programm").forward(req, resp);
break;
default:
writer.println("FALSE SIGN");
фильтр
@WebFilter(urlPatterns = "/filter/*")
public class FilterServlet implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
System.out.println("Filter Servlet");
HttpServletResponse resp = (HttpServletResponse) servletResponse;
HttpServletRequest req = (HttpServletRequest) servletRequest;
String sign = req.getParameter("sign");
PrintWriter writer = resp.getWriter();
switch (sign) {
case "+":
case "-":
case "*":
case "/":
case "cos":
case "sin":
case "tan":
case "cotan":
case ">":
filterChain.doFilter(servletRequest, servletResponse);
break;
default:
writer.println("Filter Servlet");
один из сервлетов
@WebServlet(urlPatterns = "/filter/mathe")
public class MatheServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Mathematician mathematician = new Mathematician();
Geometry geometry = new Geometry();
String sign = req.getParameter("sign");
int number1 = Integer.parseInt(req.getParameter("number1"));
int result;
PrintWriter writer = resp.getWriter();
writer.println("Mathe Servlet");
switch (sign) {
case "cos":
result = (int) geometry.cos(number1);
writer.println(sign + " " + number1 + " " + " = " + result);
break;
case "sin":
result = (int) geometry.sin(number1);
writer.println(sign + " " + number1 + " " + " = " + result);
break;
case "sqrt":
result = (int) mathematician.sqrt(number1);
writer.println(sign + " " + number1 + " " + " = " + result);
break;
default:
writer.println("FALSE SIGN");