草鱼批发价格行情:Web之简单表格控制器实例----SimpleFormController

来源:百度文库 编辑:九乡新闻网 时间:2024/07/14 01:07:01
Web之简单表格控制器实例----SimpleFormController选择表单控制目的是:不用再写复杂的表单数据装配类,而动作参数从request得到,并写相应的接口是非常容易的。因此选择表单控制器操作。 Spring mvc 过程:    当用户向指定的web服务器发出请求(网址中输入网址,或网页提交请求)时,所指定的web服务器根据web.xml的设置,找到spring的指定的servrlet服务器,spring的servlet服务器再根据自已的配置文件(文件名在web.xml中规定,或按“服务器名-servlet.xml”这个默认规定),找到用户定义的控制器,然后执行用户的控制器,返回一个视图给用户。   如图:用户----(发出请求)àweb服务器--------(根据web.xml找到)--àspring servlet-------(按spring servlet的配置文件找到 )--àspring 控 制器----(执行控制器中的代码,返回结果)----à用户。   关键:两处配置,web.xml配置,spring servlet的配置。   A    先要在web.xml配置servlet服务器(其它诸如的jsf,struts,servlet都必须要经过的步骤)。         dispatcher  org.springframework.web.servlet.DispatcherServlet        2                dispatcher        *.do    其中:servlet节点指定了自定义的Servlet服务器的实例与类别.  servlet-mapping 规定了:所有请求中含有*.do的,都将提交给“dispatcher ”servlt服务器处理 B 配置spring servlet。缺省文件名是:servlet名称-servlet.xml.    按A中情况,配置文件名为: dispatcher-servlet.xml.    其中dispatcher是web.xml中servlet\servlet-name节点的内容。                                             loginCtl                                                        action.Fuser                                  form                                   success                      其中:D 名为“lognCtl”的bean其类型是SimpleUrlHandlerMapping。他指定了网址中相关部份与spring 控制器相关联的情况。由于这里是“/login.do”与“loginCtl”相匹配,因此当网址输入: http://localhost:8084/WebApplication4/login.do时,服务器将执行loginCtl控制器的代码。 ID 名为“lognCtl”的bean其类型是“SimpleFormController”,他是一个简单表单控制器,这种控制器有三个基本的属性需要指定。这三个属性都是simpleFormController这个父类自带属性,即当一个类继承了SimpleFormController类时,这三个属性就存在,用户不需要再自行定义。1        commandClass 这个属性规定了存放表单数据的bean。便于spring 容器识别用户定义的数据接口。(是一个简单的bean)2        formView 这个属性规定了控制器执行失败时返回到的视图。由于其值是“form”,又由于名为viewResolver的bean规定了后缀是.jsp,因此控制器执行成功时,打开名为”form.jsp”的网页.3        successView这个属性规定了控制器执行成功时返回的视图。在这里,由于其值是“success”,又由于名为viewResolver的bean规定了后缀是.jsp,控制器成功执行时,打开名为“success.jsp”网页。 ID 名为“viewResolver”的Bean由于其类型是“InternalResourceViewResolver”,这个bean指定了视图命名规则。即指出了视图文件所在文件位置。视图名:前缀+视图名+后缀。前缀指定了视图所在的文件夹,后缀指定了视图类型。 Spring mvc 例 功能:当用户输入http://localhost:8084/WebApplication4/login.do网址时,展现给用户的是有“用户名”、“密码”的网页。当用户分别输入“admin”、“123”时,显示另一个含有“当前用户:123”及“返回的信息:msg1”的网页。如果用户输入的用户名或密码出错时,继续打开最初网页。其中:工程名为WebApplication4.      Jsp 文件位于WEB-INF\jsp文件夹下      Web.xml与dispatcher-servlet.xml位于WEB-INF文件夹下。      Java类位于action包中包含的资源文件有:spring web mvc 2.5 spring framework 2.5两个包。Netbean6.1自带 执行过程:用户输入http://localhost:8084/WebApplication4/login.do,web服务器在web.xml查找与login.do相匹配的servlet服务器,找到发现是dispatcher,而这个服务器用户没有批指该服务器的配置文件文件,故按缺省命名处理,找到dispatcher-servlet.xml配置文件。在dispatcher-servlet.xml发现,与login.do相匹配的spring 控制器是loginCtl,查找loginCtl控制器的bean配置情况。发现是表单控制器,所用到的表单数据接口是fuser类,执行失败时,打开form.jsp网页;当执行成功时,打开success.jsp网页。Web.xml 配置内容:指定了所有含有.do的请求都交给dispatcher servlet服务器处理。            30                 dispatcher       org.springframework.web.servlet.DispatcherServlet        2                dispatcher        *.do                index.jsp      dispatcher-servlet.xml配置内容:                                               loginCtl                                                        action.Fuser                                 form                                   success                          Login.java表单控制类package action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.validation.BindException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.SimpleFormController;import java.util.HashMap;import java.util.List;import java.util.LinkedList;  publicclass Login extends SimpleFormController{     protected ModelAndView onSubmit(HttpServletRequest arg0, HttpServletResponse arg1, Object cmd, BindException ex) throws Exception {        Fuser fuser=(Fuser) cmd;        if (loginCheck(fuser)==0 ){            HashMap result_map=new HashMap();            result_map.put("fuser", fuser);                        List msgList=new LinkedList();            msgList.add("msg1");                        result_map.put("messages", msgList);            return new ModelAndView(this.getSuccessView(),result_map);        }                returnnew ModelAndView(this.getFormView());    }        privateint loginCheck(Fuser fuser){       if ( ("admin".equals(fuser.getUsername()) )                  && ("123".equals(fuser.getPassword()) ) ){           return 0;       }       return 1;   } } Fuser.java表单数据接口类package action;public class Fuser {    private String username="";    private String password="";    public String getUsername(){        return username;    }    public void setUsername(String username){        this.username=username;    }    public String getPassword(){        return password;    }    public void setPassword(String password){        this.password=password;    }        }  form.jsp视图---登陆视图  <%@page contentType="text/html" pageEncoding="UTF-8"%>                     JSP Page                
            

登陆

            
用户名:                             
             
密码:                             
             

                                                

        
     success.jsp 登陆成功视图<%@page contentType="text/html" pageEncoding="UTF-8"%>                      JSP Page               

当前用户:${fuser.username}

      

返回的信息

      

           <% java.util.List mes = ( java.util.List)request.getAttribute("messages");               out.print(mes.get(0).toString());           %>