springMVC配置
1.web.xml配置DispatcherServlet
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.头文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
3.视图解析器
<bean id="myViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
4.映射器
映射器 :映射器三种,同时配置,根据配置顺序查找映射URL,否则根据配置的order查找,order值越大,优先级越高,配置order的映射器比不配order的映射器优先级高
(1).BeanNameUrlHandlerMapping
<!-- 根据controller 中配置的name查找映射,也是默认的映射器 -->
<bean id="beanNameUrlHandlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="3"></property>
</bean>
<bean id="userController" name="/user"
class="cn.itcast.springmvc.controller.UserController"></bean>
(2).SimpleUrlHandlerMapping
<!-- 根据mappings属性中配置的props列表查找映射 -->
<bean id="simpleUrlhandlerMappin"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- <prop key="/user">myController</prop> -->
<prop key="/myUser">userController</prop>
</props>
</property>
<property name="order" value="1"></property>
</bean>
<bean id="userController" name="/user"
class="cn.itcast.springmvc.controller.UserController"></bean>
(3).ControllerClassNameHandlerMapping
<!-- 根据controller的类名(第一个字母小写)查找映射 -->
<bean id="controllerClassNameMapping"
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<bean id="ControllerClassNameHandlerMapping"
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="order" value="2"></property>
</bean>
访问时,只需将控制器的名称除了Controller第一个字母大写,其他全部小写,如MyCommandController,访问时要写成mycommandController
5.控制器
(1).控制器
<bean id="userController" name="/user"
class="cn.itcast.springmvc.controller.UserController"></bean>
import org.springframework.web.servlet.mvc.AbstractController;
public class UserController extends AbstractController {
Logger log = Logger.getLogger(UserController.class);
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map parameterMap = request.getParameterMap();
log.info("................1111..........................."+parameterMap.get("name"));
System.out.println(parameterMap);
String name = request.getParameter("name");
Map<String,String> model=new HashMap<String, String>();
model.put("name", name);
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
return new ModelAndView("success", model);
}
}
(2).命令控制器
<!-- command控制器,类似于模型驱动,extends AbstractCommandController,实现默认执行方法,参数中的Object,就是模型,模型的类型,是根据你在构造函数中注册的类型和名称,this.setCommandClass(User.class);this.setCommandName("user"); -->
<bean id="myCommandController" name="/myCommand"
class="cn.itcast.springmvc.controller.MyCommandController"></bean>
import org.springframework.web.servlet.mvc.AbstractCommandController;
public class MyCommandController extends AbstractCommandController {
Logger log = Logger.getLogger(MyCommandController.class);
public MyCommandController() {
this.setCommandClass(User.class);
// this.setCommandName("user");
}
@Override
protected ModelAndView handle(HttpServletRequest req,
HttpServletResponse resp, Object command, BindException arg3)
throws Exception {
User user=(User)command;
req.setAttribute("name", user.getName());
return new ModelAndView("success","user",user);
}
}
(3).表单控制器
<!-- 表单控制器:用于表单提交,get方式跳转的是formView对应的value页面,post方式跳转的是successView对应的value页面 -->
<bean id="MyFormContorller" name="/mySubmit"
class="cn.itcast.springmvc.controller.MySubmitController">
<property name="formView" value="edit"></property>
<property name="successView" value="success"></property>
</bean>
1.jsp
<form action="${pageContext.request.contextPath}/mySubmit" method="post">
<input type="text" name="name" value="1">
<input type="submit" value="提交">
success.jsp
success!hello ${name}
import org.springframework.web.servlet.mvc.SimpleFormController;
public class MySubmitController extends SimpleFormController {
Logger log = Logger.getLogger(MySubmitController.class);
public MySubmitController() {
this.setCommandClass(User.class);
}
@Override
protected void doSubmitAction(Object command) throws Exception {
System.out.println(((User)command).getName());
// super.doSubmitAction(command);
}
@Override
protected ModelAndView processFormSubmission(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
request.setAttribute("name", "123");
return super.processFormSubmission(request, response, command, errors);
}
}
(4).向导表单控制器
<!-- wizardFormController:向导表单控制器 -->
<bean id="myWizardFormController" name="/reg"
class="cn.itcast.springmvc.controller.MyWizardFormController">
<property name="pages">
<list>
<value>/wizard/1</value>
<value>/wizard/2</value>
<value>/wizard/3</value>
</list>
</property>
</bean>
1.jsp
<form action="${pageContext.request.contextPath}/reg" method="post">
<input type="text" name="name" value="1">
<input type="submit" name="_cancel" value="取消">
<input type="submit" name="_target1" value="下一页">
2.jsp
<form action="${pageContext.request.contextPath}/reg" method="post">
<input type="text" name="age" value="2">
<input type="submit" name="_target0" value="上一页">
<input type="submit" name="_cancel" value="取消">
<input type="submit" name="_target2" value="下一页">
</form>
3.jsp
<form action="${pageContext.request.contextPath}/reg" method="post">
<input type="text" name="addr" value="333">
<input type="submit" name="_target1" value="上一页">
<input type="submit" name="_cancel" value="取消">
<input type="submit" name="_finish" value="提交">
</form>
import org.springframework.web.servlet.mvc.AbstractWizardFormController;
public class MyWizardFormController extends AbstractWizardFormController {
Logger log = Logger.getLogger(MyWizardFormController.class);
public MyWizardFormController() {
this.setCommandClass(User.class);
}
@Override
protected ModelAndView processFinish(HttpServletRequest req,
HttpServletResponse resp, Object obj, BindException arg3)
throws Exception {
User user=(User)obj;
System.out.println(user);
return new ModelAndView("success");
}
}
5.多方法控制器
注意:在写多个方法时,方法必须要有两个参数,一个是HttpServletRequest,另一个是HttpServletResponse
<!-- controller中配置多方法,使用MultiActionController和ParameterMethodNameResolver -->
<bean id="parameterMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="m"></property>
</bean>
<bean id="multiContorller" name="/multi"
class="cn.itcast.springmvc.controller.MyMultiController">
<property name="methodNameResolver" ref="parameterMethodNameResolver"></property>
</bean>
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class MyMultiController extends MultiActionController{
public ModelAndView user(HttpServletRequest req,HttpServletResponse resp){
System.out.println("......................................userName method run");
return new ModelAndView("success");
}
}

浙公网安备 33010602011771号