请教高手spring的mvc模式是什么样子的?如果有例子就更好了!谢谢
------解决方案--------------------
给你贴个spring mvc Form的封装
------解决方案--------------------
多了去了 下载官方文档看看就行了 很容易的
------解决方案--------------------
------解决方案--------------------
http://swengineer.iteye.com/blog/1103748 看看就知道了
------解决方案--------------------
- Java code
package com.louis.ssh.web.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.louis.ssh.hibernate.GeneralDao;public interface Controller { public HttpServletRequest getRequest(); public HttpServletResponse getResponse(); public String getPathVariable(String pathVarName); public void dataPrepare(); public GeneralDao getGeneralDao();}package com.louis.ssh.web.controller;import java.lang.reflect.ParameterizedType;import java.util.Map;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.ui.ModelMap;import org.springframework.web.context.request.NativeWebRequest;import org.springframework.web.servlet.HandlerMapping;import com.louis.ssh.hibernate.GeneralDao;@SuppressWarnings("unchecked")public abstract class AbstractController<T> implements Controller { private NativeWebRequest nativeWebRequest; private ModelMap model; private GeneralDao generalDao; private String redirectPath; private Class<T> clazz; public static final String SUFFIX = ".html"; public AbstractController() { } @SuppressWarnings("unchecked") public String getPathVariable(String pathVarName) { HttpServletRequest request = getRequest(); Map<String, String> uriTemplateVariables = (Map<String, String>) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); if (uriTemplateVariables == null) { return null; } return uriTemplateVariables.get(pathVarName); } public String redirect() { return "redirect:" + redirectPath + SUFFIX; } public void dataPrepare() { } public final HttpServletRequest getRequest() { return nativeWebRequest.getNativeRequest(HttpServletRequest.class); } public final HttpServletResponse getResponse() { return nativeWebRequest.getNativeResponse(HttpServletResponse.class); } public String getRedirectPath() { return redirectPath; } public void setRedirectPath(String redirectPath) { this.redirectPath = redirectPath; } public ModelMap getModel() { return model; } public void setModel(ModelMap model) { this.model = model; } public void setModel(String key, Object value) { if (this.model == null) { model = new ModelMap(); } this.model.put(key, value); } public GeneralDao getGeneralDao() { return generalDao; } @Resource(name = "generalDao") public void setGeneralDao(GeneralDao generalDao) { this.generalDao = generalDao; } public Class<T> getClazz() { if (clazz == null) { clazz = (Class<T>) ((ParameterizedType) this.getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; } return clazz; } protected void addTipText(Object message) { getRequest().getSession().setAttribute("tipText", message); } public NativeWebRequest getNativeWebRequest() { return nativeWebRequest; } public void setNativeWebRequest(NativeWebRequest nativeWebRequest) { this.nativeWebRequest = nativeWebRequest; }}package com.louis.ssh.web.controller;import java.io.Serializable;import javax.annotation.Resource;import org.springframework.ui.ModelMap;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.context.request.NativeWebRequest;import com.louis.ssh.domain.DomainObject;import com.louis.ssh.util.JodaUtil;import com.louis.ssh.util.LowerAndUpperCase;import com.louis.ssh.web.converter.Converter;public abstract class FormController<T extends DomainObject> extends AbstractController<T> { private String formView; private Converter converter; private static final String MODELATTRIBUTE = "domainObject"; public FormController() { String name = LowerAndUpperCase.toLowerCase(getClazz().getSimpleName()); this.formView = name + "/" + name + "form"; setRedirectPath("/" + name + "/" + "list"); } @InitBinder public void initBinder(WebDataBinder binder) { registerPropertyEditor(binder); } public void registerPropertyEditor(WebDataBinder binder) { } @ModelAttribute(MODELATTRIBUTE) public T getDomainObject(NativeWebRequest nativeWebRequest) { setNativeWebRequest(nativeWebRequest); Serializable id = getConverter().converter(getPathVariable("id")); return getDomainObject(id); } @RequestMapping(value = { "/form" + SUFFIX, "/form/{id}" + SUFFIX }, method = RequestMethod.GET) public String setupForm(ModelMap model) { setModel(model); dataPrepare(); return formView; } @RequestMapping(value = { "/form" + SUFFIX, "/form/{id}" + SUFFIX }, method = RequestMethod.POST) public String save(@ModelAttribute(MODELATTRIBUTE)T domainObject) { saveBefore(domainObject); if (domainObject.getId() != null) { domainObject.setUpdateTime(JodaUtil.now()); } getGeneralDao().saveOrUpdate(domainObject); saveAfter(domainObject); return redirect(); } @RequestMapping(value = "/delete/{id}" + SUFFIX) public String delete() { Serializable id = getConverter().converter(getPathVariable("id")); T item = getGeneralDao().get(id, getClazz()); deleteBefore(item); getGeneralDao().delete(item); deleteAfter(); return redirect(); } public void saveBefore(T domainObject) { } public void saveAfter(T domainObject) { } public void deleteAfter() { } public void deleteBefore(T domainObject) { } public String getFormView() { return formView; } public void setFormView(String formView) { this.formView = formView; } public T getDomainObject(Serializable id) { T t = null; if (id != null) { t = getGeneralDao().get(id, getClazz()); } if (t == null) { try { t = getClazz().newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return t; } public Converter getConverter() { return converter; } @Resource(name = "converter") public void setConverter(Converter converter) { this.converter = converter; }}