1:@ReqeustMapping
这是当前我们使用最多的一种方式,是以方法作为handler,可能定义如下:
@Controller
@RequestMapping("/test")
public class FileUploadController {
@RequestMapping("/file-upload")
public ModelAndView upload(@RequestParam(value = "file", required = true)MultipartFile file,
HttpServletRequest request, HttpSession session) {
...
}
}
对应的handleradpater是org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
。
2:Conroller接口
实现org.sprignframework.web.servlet.mvc.Controller
,只有一个方法,源码如下:
@FunctionalInterface
public interface Controller {
@Nullable
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
可能定义如下:
@Component(value = "/my_bean_name_url_handler")
public class MyBeanNameUrlHandlerController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
String msg = "this is my bean name url handler";
System.out.println(msg);
response.getWriter().write(msg);
return null;
}
}
对应的handleradapter是org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
。
3:HttpRequestHandler接口
实现org.springframework.web.HttpReqeustHandler
接口,只有一个方法,源码如下:
@FunctionalInterface
public interface HttpRequestHandler {
void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
可能使用如下:
@Component("/login")
public class LoginController implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("login...");
response.getWriter().write("login ...");
}
}
对应的handleradapter是org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
。
4:HttpServlet类
实现javax.servlet.http.HttpServlet
类,可能定义如下:
public class LastModifiedServlet extends HttpServlet {
private static Long count = -1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("req...");
count = System.currentTimeMillis();
resp.getWriter().write("hello" + count);
}
@Override
protected long getLastModified(HttpServletRequest req) {
return count;
}
}
对应的handleradpater是org.springframework.web.servlet.handler.SimpleServletHandlerAdapter
。