8、SpringMVC源码分析(3):分析ModelAndView的形成过程
首先,我们还是从DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception方法开始,看看这个牛逼的ModelAndView是怎么开始的,又是怎么结束的:
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequest processedRequest = request;
HandlerExecutionChain mappedHandler = null;
boolean multipartRequestParsed = false; WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request); try {
ModelAndView mv = null;
Exception dispatchException = null; try {
processedRequest = checkMultipart(request);
multipartRequestParsed = (processedRequest != request); // Determine handler for the current request.
mappedHandler = getHandler(processedRequest);
if (mappedHandler == null || mappedHandler.getHandler() == null) {
noHandlerFound(processedRequest, response);
return;
} // Determine handler adapter for the current request.
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); // Process last-modified header, if supported by the handler.
String method = request.getMethod();
boolean isGet = "GET".equals(method);
if (isGet || "HEAD".equals(method)) {
long lastModified = ha.getLastModified(request, mappedHandler.getHandler());
if (logger.isDebugEnabled()) {
logger.debug("Last-Modified value for [" + getRequestUri(request) + "] is: " + lastModified);
}
if (new ServletWebRequest(request, response).checkNotModified(lastModified) && isGet) {
return;
}
} if (!mappedHandler.applyPreHandle(processedRequest, response)) {
return;
} // Actually invoke the handler.调用handler方法,返回ModelAndView类型的对象
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
if (asyncManager.isConcurrentHandlingStarted()) {
return;
}
// 设置mv的Object view属性值,是一个String类型(依据request的URI计算,加上一个前缀和后缀得到)
applyDefaultViewName(request, mv);
mappedHandler.applyPostHandle(processedRequest, response, mv);
}
catch (Exception ex) {
dispatchException = ex;
}
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
}
catch (Exception ex) {
triggerAfterCompletion(processedRequest, response, mappedHandler, ex);
}
catch (Error err) {
triggerAfterCompletionWithError(processedRequest, response, mappedHandler, err);
}
finally {
if (asyncManager.isConcurrentHandlingStarted()) {
// Instead of postHandle and afterCompletion
if (mappedHandler != null) {
mappedHandler.applyAfterConcurrentHandlingStarted(processedRequest, response);
}
}
else {
// Clean up any resources used by a multipart request.
if (multipartRequestParsed) {
cleanupMultipart(processedRequest);
}
}
}
}
从上面的源代码可以看出,mv是在调用handler方法的时候返回的(即便,我们@RequestMapping注解标识的handler方法很多时候返回的是一个String,或者是View类型。但是,反射是无所不能的,你懂的...)。我们知道,@RequestMapping标注的handler方法通常能够返回三种类型的结果:String,ModelAndView和View。从上面的ha.handle方法我们知道,动态代理最后都会将结果转化成ModelAndView类型。
一、得到mv
下面对mv = ha.handle(processedRequest, response, mappedHandler.getHandler())方法中如何得到mv实例的演变过程进行分析:
从7、SpringMVC源码分析(2)中分析ha.handle方法的流程时我们知道:
①、HandlerAdapter是一个接口类型;
②、AbstractHandlerMethodAdapter是一个抽象类,该抽象类实现了HandlerAdapter接口;
③、AbstractHandlerMethodAdapter的handle是一个public final类型的具体方法,此方法直接调用了AbstractHandlerMethodAdapter中protected abstract类型的抽象方法handleInternal(该方法由具体的子类来实现);
④、HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler())语句会从mappedHandler队列中找到第一个能够处理该请求的HandlerAdapter的具体实现的一个实例,将其向上转型为HandlerAdapter并且赋值给ha;
⑤、@RequestMapping标注的handler方法都由RequestMappingHandlerAdapter来处理,这个Adapter继承自抽象类AbstractHandlerMethodAdapter。所以,AbstractHandlerMethodAdapter.handleInternal方法由RequestMappingHandlerAdapter.handleInternal来实现;
⑥、总结上面①~⑤的分析,我们可以得出这样一个简单的结论:doDispatch中的ha.handle方法实际上是调用了RequestMappingHandlerAdapter.handleInternal方法;
有了以上⑥的结论以后,我们继续追踪ModelAndView的源头,从RequestMappingHandlerAdapter.handleInternal追踪到RequestMappingHandlerAdapter.invokeHandleMethod,我们来看一看invokeHandleMethod的源代码:
【代码片段2】:
/**
* Invoke the RequestMapping handler method preparing a ModelAndView if view resolution is required.
*/
private ModelAndView invokeHandleMethod(HttpServletRequest request,
HttpServletResponse response, HandlerMethod handlerMethod) throws Exception { //step 1、ModelAndView的前世:是一个ModelAndViewContainer实例
ModelAndViewContainer mavContainer = new ModelAndViewContainer(); /*
* RequestContextUtils.getInputFlashMap(request)可以获取到request中的attribute,
* 并且将所有的request中的attribute放置在mavContainer中,此时使用的是defaultModel
*/
mavContainer.addAllAttributes(RequestContextUtils.getInputFlashMap(request));
modelFactory.initModel(webRequest, mavContainer, requestMappingMethod);
/*
* 在RequestMappingHandlerAdapter中ignoreDefaultModelOnRedirect默认为false
*/
mavContainer.setIgnoreDefaultModelOnRedirect(this.ignoreDefaultModelOnRedirect); //省略许多代码... if (asyncManager.hasConcurrentResult()) {
//...
mavContainer = (ModelAndViewContainer) asyncManager.getConcurrentResultContext()[0]; //...
} //step 2、调用handler方法,
requestMappingMethod.invokeAndHandle(webRequest, mavContainer); //省略许多代码... //step 3、从mavContainer中获取到ModelAndView实例,返回
return getModelAndView(mavContainer, modelFactory, webRequest);
}
我们看看【代码片段2】中step1:
ModelAndViewContainer是个什么东西?同样从7、SpringMVC源码分析(2)的step1中我们可以得出如下的结论:
①、ModelMap实际上就是一个LinkedHashMap<String, Object>,可以用于存放key-value的集合;
②、ModelAndViewContainer含有两个ModelMap对象:defaultModel和redirectModel,默认情况下使用defaultModel;
有了以上两个结论,我们还有必要分析一下ModelAndViewContainer的一些细节(主要参看下面代码中的注释):
【代码片段3】:
public class ModelAndViewContainer {
/*
* 对这7个属性我们可以将其分为3个部分来看
*/ // 1、两个模型和一个view,其中view可以存放任何java类型
private Object view; // * 注意这个是final类型,也就是不能再重新为defaultModel赋值
private final ModelMap defaultModel = new BindingAwareModelMap(); private ModelMap redirectModel; // 2、记录当前的Model使用策略
private boolean ignoreDefaultModelOnRedirect = false; private boolean redirectModelScenario = false; // 3、记录request和session的处理状态
private final SessionStatus sessionStatus = new SimpleSessionStatus(); private boolean requestHandled = false; //和view属性相关的处理方法
/*
* 对view的处理主要分为String类型和非String类型。如果views是一个
* String类型的对象,那么它就是下面说的isViewReference
*/
public void setViewName(String viewName) {
this.view = viewName;
} public String getViewName() {
return (this.view instanceof String ? (String) this.view : null);
} public void setView(Object view) {
this.view = view;
} public Object getView() {
return this.view;
} /*
* 注意,如果veiw是一个String类型,那么isViewReference
*/
public boolean isViewReference() {
return (this.view instanceof String);
} //和model相关的处理方法
/*
* 假设redirectModelScenario = R ,ignoreDefaultModelOnRedirect = I ,(redirectModel == null)= M
* 那么(R, I, M)共有8中组合情况,useDefaultModel返回false(也就是使用redirectModel)只有三种情况:
* (1,1,0)、(1,1,1)、(1,0,0)
* a:如果同时设置了redirectModelScenario和ignoreDefaultModelOnRedirect为true,那么无论redirectModel
* 是否为null,都会使用redirectModel;
* b:如果设置了redirectModelScenario为true,而ignoreDefaultModelOnRedirect为false,同时redirectModel
* 为null,那么也会使用redirectModel;
*/
private boolean useDefaultModel() {
return (!this.redirectModelScenario || (!this.ignoreDefaultModelOnRedirect && this.redirectModel == null));
} /*
* 这个方法是重要的,通过设置redirectModelScenario和ignoreDefaultModelOnRedirect来影响该方法的返回值;
* 如果没有初始化redirectModel,那么就会new一个ModelMap对象进行返回;
*/
public ModelMap getModel() {
if (useDefaultModel()) {
return this.defaultModel;
}
else {
return (this.redirectModel != null) ? this.redirectModel : new ModelMap();
}
} public ModelMap getDefaultModel() {
return this.defaultModel;
} public void setRedirectModel(ModelMap redirectModel) {
this.redirectModel = redirectModel;
} /**
* Whether the controller has returned a redirect instruction, e.g. a
* "redirect:" prefixed view name, a RedirectView instance, etc.
*/
public void setRedirectModelScenario(boolean redirectModelScenario) {
this.redirectModelScenario = redirectModelScenario;
} public void setIgnoreDefaultModelOnRedirect(boolean ignoreDefaultModelOnRedirect) {
this.ignoreDefaultModelOnRedirect = ignoreDefaultModelOnRedirect;
} //省略一些方法...
}
接下来分析【代码片段2】中step2:
看看requestMappingMethod.invokeAndHandle(webRequest, mavContainer);中对mavContainer做了什么事情?看看requestMappingMethod.invokeAndHandle(webRequest, mavContainer)的源代码:
【代码片段4】:
/**
*Invokes the method and handles the return value through one of the configured HandlerMethodReturnValueHandlers.
*/
public void invokeAndHandle(ServletWebRequest webRequest,
ModelAndViewContainer mavContainer, Object... providedArgs) throws Exception { // 调用handler方法,的到返回结果为returnValue
Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);
setResponseStatus(webRequest); if (returnValue == null) {//handler返回null
if (isRequestNotModified(webRequest) || hasResponseStatus() || mavContainer.isRequestHandled()) {
mavContainer.setRequestHandled(true);
return;
}
}else if (StringUtils.hasText(this.responseReason)) {
mavContainer.setRequestHandled(true);
return;
} // 设置标志位,表示当前request请求还没有处理完成
mavContainer.setRequestHandled(false);
try {
// 处理返回结果returnValue
this.returnValueHandlers.handleReturnValue(
returnValue, getReturnValueType(returnValue), mavContainer, webRequest);
}catch (Exception ex) {
if (logger.isTraceEnabled()) {
logger.trace(getReturnValueHandlingErrorMessage("Error handling return value", returnValue), ex);
}
throw ex;
}
}
看看上面代码中是如何处理返回结果returnValue的,this.returnValueHandlers.handleReturnValue实际上调用的是HandlerMethodReturnValueHandlerComposite.handleReturnValue方法,代码分析如下:
【代码片段5】:
public void handleReturnValue(Object returnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { //寻找能够处理returnType类型的HandlerMethodReturnValueHandler实例
HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType); //如果没有找到对应的HandlerMethodReturnValueHandler,则会返回一个异常
Assert.notNull(handler, "Unknown return value type [" + returnType.getParameterType().getName() + "]"); //用上面寻找到的handler来处理返回结果
handler.handleReturnValue(returnValue, returnType, mavContainer, webRequest);
}
从上面的代码看出,处理返回结果分为两个步骤:①、寻找能够处理returnType类型的HandlerMethodReturnValueHandler,如果没有找到,则会抛出异常;②、利用已经找到的handler来处理返回结果;
同时,我们要注意HandlerMethodReturnValueHandler是一个接口类型,该接口只有两个方法:boolean supportsReturnType(MethodParameter returnType)和void handleReturnValue(...)。看看它有多少个实现类:
aaarticlea/png;base64,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" alt="" />
既然是这样,我们就像看看到底是如何确定处理返回结果的handler的呢??同时,又能够处理多少种不同的handler返回类型呢??
看看getReturnValueHandler(returnType)方法的源代码:
【代码片段6】:
/**
* Find a registered HandlerMethodReturnValueHandler that supports the given return type
*/
private HandlerMethodReturnValueHandler getReturnValueHandler(MethodParameter returnType) {
/*
* returnValueHandlers是List<HandlerMethodReturnValueHandler>类型,
* 在调试的时候可以看到它共包含了13个对象。还可以增减吗??如何注
* 册一个returnValueHandler呢??有待探究。
*/
for (HandlerMethodReturnValueHandler returnValueHandler : returnValueHandlers) {
if (logger.isTraceEnabled()) {
logger.trace("Testing if return value handler [" + returnValueHandler + "] supports [" +
returnType.getGenericParameterType() + "]");
}
if (returnValueHandler.supportsReturnType(returnType)) {
return returnValueHandler;
}
}
return null;
}
我们可以看到,在getReturnValueHandler方法中会遍历returnValueHandlers(实际上是一个List<HandlerMethodReturnValueHandler>类型),如果遇到能够支持返回值类型的handler,则将其返回。在调试中看看returnValueHandlers链表中都有哪些对象:
aaarticlea/png;base64,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Xcvvfhdvc2KOc+++27BiResDD/Rec83I174mVh0Ez69bF2/zxzHW3aVpd8kaWKG7rrtL+9nyXT4KPnny5P79+w8ePFhUVHQEwdGjR+1/XXz11VfHjh374osvTqohZNDbufsOHnfpw7IEw8J1y//696mXZ9y+cN1yZoIfvX79Pz145bd/+wPohhQAACAASURBVJPsoo2s87uW/wy/xcgBECGqiHy5TgAAAAAkIwgFMjg42N/f39PT09XV1d7e7sqPc+fOVVdXnzlzpqKioqys7NSpUydPnjxx4sTx48dLSkpKSkqOHTtWkhiof/BB16urf/DBeJsTZVRs2lSzZk39gw92XnvtwD/+oy/J4U2A/sd/7Lz22rOvvx7v2oxnbF98lXbVYmkyhe762kxNm/maj6KLioo+++yzPXv27N+/vwDBwYMH7X9dHDp06NChQ/v27StSQ8igN97P21Po0odliYTrV9/7H8/d918frnjyncX/8dx916++138e2xdfhd8a5ACIEAAAAAAAuOApkM7Ozra2tubm5vr6+vPnz1dVVVVUVJSWlpaUlBw9erSwsPDQoUMFBQUHDhzYv39/fn7+vkRC9bx5rlfXdtVV1fPmJS/Pz5xZf+ut7Vdd1f297w38j/8RnuQY+Zu/6bvkko4rrmiZOrX+1ltr5s6Ne72ALtuuusq9U9Xz5rH79JpfaZqm/WqN4iOwa9euzZs35+bmbtu27RMEO3bssP9FEQwGt27duksNIXNefOODjz51GY2ndqwxa82iG56auWLdnxz+5w1PzZy1ZpHPbHJ+eyU9vtm+TzkgQgAAAAAA4MIWIUwF0tTUdPHixZqaGtM0S0tLjxw5cvDgwc8//zwvL++TTz7ZunVrbm7uRx99tHnz5k2bNn2QSDg5c2Z4zjoQGF+enDkzKo/Ae++99/rrr//lL39Zv359FoK33nrL/tdFdnZ2dnb2m2+++Z4a7PyXPfnMa//9rsuo2DzG+KtZV9355J13PXVXiBl33fnknX816yqf2bx832XazcvYB0CEAAAAAADABSpC+vv7e3t7u7q6XAVSXV1dXl5eXFxcUFDw6aef5ubmvvvuu+vWrVu7du2rr7768ssvG4bx4osvvvDCC88nEvb/27/F3ZsEAsPgoRkzovIIPPvss08++WRGRsaf//znlQgyMzPtf1GsWrXq6aefflYN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" alt="" />
可以看见,returnValueHandlers链表中一共有14个对象,对应于上面说的HandlerMethodReturnValueHandler接口实现类中除了HandlerMethodReturnValueHandlerComposite类之外的其它实现类对象。这个有点儿意思哈(^_^)。
如果在request请求处理的handler方法中返回String类型,则其getReturnValueHandler(returnType)方法就会返回一个ViewNameMethodReturnValueHandler类型的实例。看看ViewNameMethodReturnValueHandler类的定义:
【代码片段7】:
public class ViewNameMethodReturnValueHandler implements HandlerMethodReturnValueHandler { private String[] redirectPatterns; public void setRedirectPatterns(String... redirectPatterns) {
this.redirectPatterns = redirectPatterns;
} public String[] getRedirectPatterns() {
return this.redirectPatterns;
} @Override
public boolean supportsReturnType(MethodParameter returnType) {
Class<?> paramType = returnType.getParameterType();
return (void.class.equals(paramType) || String.class.equals(paramType));
} @Override
public void handleReturnValue(Object returnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { if (returnValue == null) {
return;
}
else if (returnValue instanceof String) {
String viewName = (String) returnValue; // 对mavContainer的设置就是将view属性赋值为returnValue
mavContainer.setViewName(viewName); /* 如果returnValue指示为redirect(比如说"redirect:"前缀,redirect pattern的设置等)
* 则将设置redirectModelScenario为true。
*/
if (isRedirectViewName(viewName)) {
mavContainer.setRedirectModelScenario(true);
}
}
else {
// should not happen
throw new UnsupportedOperationException("Unexpected return type: " +
returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
}
} /**
* Whether the given view name is a redirect view reference.
* The default implementation checks the configured redirect patterns and
* also if the view name starts with the "redirect:" prefix.
* @param viewName the view name to check, never {@code null}
* @return "true" if the given view name is recognized as a redirect view
* reference; "false" otherwise.
*/
protected boolean isRedirectViewName(String viewName) {
if (PatternMatchUtils.simpleMatch(this.redirectPatterns, viewName)) {
return true;
}
return viewName.startsWith("redirect:");
} }
到现在为止,request请求的handler方法也调用了。同时根据handler方法的返回结果调用不同的XxxReturnValueHandler的handleReturnValue方法对mavContainer的view及其状态进行了设置。
我们分析出:如果handler方法的返回类型是String的话,①设置mavContainer的Object view为该返回字符串;②如果返回字符串中以“redirect:”开头,则设置redirectModelScenario为true(也可以通过redirect pattern来设置,这种方式目前还不熟悉??)。
接下来就是通过设置好的mavContainer来得到一个ModelAndView。
最后就是分析【代码片段2】中step3:
具体就是执行 return getModelAndView(mavContainer, modelFactory, webRequest) 返回一个ModelAndView,成功的将handler的各种类型的返回结果转换成ModelAndView。
看看getModelAndView源代码,分析其流程,我们可以再反过来推step2中还需要做哪些设置:
【代码片段8】:
private ModelAndView getModelAndView(ModelAndViewContainer mavContainer,
ModelFactory modelFactory, NativeWebRequest webRequest) throws Exception { modelFactory.updateModel(webRequest, mavContainer);
if (mavContainer.isRequestHandled()) {
return null;
} //得到defaultModel或者是redirectModel
ModelMap model = mavContainer.getModel(); /*
* 注意mavContainer.getViewName()方法,如果mavContainer的Object view是一个String类型,
* 则返回该字符串;如果不是,则得到null
*/
ModelAndView mav = new ModelAndView(mavContainer.getViewName(), model); if (!mavContainer.isViewReference()) {
mav.setView((View) mavContainer.getView());
}
if (model instanceof RedirectAttributes) {
Map<String, ?> flashAttributes = ((RedirectAttributes) model).getFlashAttributes();
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
RequestContextUtils.getOutputFlashMap(request).putAll(flashAttributes);
}
return mav;
}
8、SpringMVC源码分析(3):分析ModelAndView的形成过程的更多相关文章
- 7、SpringMVC源码分析(2):分析HandlerAdapter.handle方法,了解handler方法的调用细节以及@ModelAttribute注解
从上一篇 SpringMVC源码分析(1) 中我们了解到在DispatcherServlet.doDispatch方法中会通过 mv = ha.handle(processedRequest, res ...
- springMVC源码分析--ViewNameMethodReturnValueHandler返回值处理器(三)
之前两篇博客springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)和springMVC源码分析--HandlerMethodReturnValu ...
- springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod
在之前一篇博客中springMVC源码分析--RequestMappingHandlerAdapter(五)我们已经简单的介绍到具体请求访问的执行某个Controller中的方法是在RequestMa ...
- springMVC源码分析--RequestMappingHandlerAdapter(五)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接 ...
- springMVC源码分析--HttpRequestHandlerAdapter(四)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接 ...
- springMVC源码分析--SimpleControllerHandlerAdapter(三)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接 ...
- springMVC源码分析--SimpleServletHandlerAdapter(二)
上一篇博客springMVC源码分析--HandlerAdapter(一)中我们主要介绍了一下HandlerAdapter接口相关的内容,实现类及其在DispatcherServlet中执行的顺序,接 ...
- springMVC源码分析--HandlerAdapter(一)
HandlerAdapter的功能实际就是执行我们的具体的Controller.Servlet或者HttpRequestHandler中的方法. 类结构如下:
- springMVC源码分析--异常处理机制HandlerExceptionResolver执行原理(二)
上一篇博客springMVC源码分析--异常处理机制HandlerExceptionResolver简单示例(一)中我们简单地实现了一个异常处理实例,接下来我们要介绍一下HandlerExceptio ...
随机推荐
- Oracle 的证也会过期咯
How does this recertification requirement affect me? If your Database Certification credential is re ...
- windows2003服务器不显示桌面怎么办
ctrl +alt+delete 进入任务管理器应用程序里 创建新任务 C:\WINDOWS\explorer.exe 运行就行
- CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie
1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...
- VB 思维导图总结(三)
续上篇.vb总结之“思维导图”(2) 第十章.绘制图形 第十一章.数据库技术... 第十二章.总结! 相信有了vb的一个基础,应对接下来的学习会顺畅些.加油!
- asp.net中json格式化及在js中解析json
类: public class UploadDocumentItem { public UploadDocumentItem() { } public string DocMuid { get; se ...
- Wireshark技巧-过滤规则和显示规则
Wireshark是一个强大的网络协议分析软件,最重要的它是免费软件. 过滤规则 只抓取符合条件的包,在Wireshark通过winpacp抓包时可以过滤掉不符合条件的包,提高我们的分析效率. 如果要 ...
- 2659: [Beijing wc2012]算不出的算式 - BZOJ
最近有点颓废,刷水题,数学题(根本不会做啊) 题意:求 q,p是两个奇质数 网上题解就直接说是几何意义,问了别人才知道 我们在坐标轴上画出来就是在线段y=(q/p)x下方的格点和y=(p/q)x下方的 ...
- Netty4.x中文教程系列(三) ChannelHandler
Netty4.x中文教程系列(四) ChannelHandler 上一篇文章详细解释了Hello World示例的代码.里面涉及了一些Netty框架的基础. 这篇文章用以解释ChannelHandl ...
- python 发邮件 utf-8
import smtplib from operator import itemgetter, attrgetter from email.mime.text import MIMEText from ...
- execvp使用实例
问题描述: 本程序实现模拟shell功能,用户输入命令,返回相应的结果 问题解决: 注: 以上指出了execvp函数的使用,使用时第一个参数是文件名,第二个参数是一个 ...