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");
    }
}

 

posted @ 2015-12-05 20:53  Runny_Hao  阅读(553)  评论(0)    收藏  举报