zoukankan      html  css  js  c++  java
  • [spring] spring 2.5 mvc:简单的登录功能

    与其它web MVC框架一样,Spring的web MVC框架是一个请求驱动的web框架,其设计围绕一个中心的servlet进行, 它能将请求分发给控制器,并提供其它功能帮助web应用开发。然而,Spring的DispatcherServlet 所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许你使用Spring的其它功能。

    下图展示了Spring Web MVC DispatcherServlet处理请求的流程。 熟悉设计模式的读者可能会发现DispatcherServlet应用了“ Front Controller”模式(很多其他的主流web框架也都用到了该模式)。

    注:

    Front Controller - 前端控制器  ;

    Delegate request: 委托请求 ;

    rendering of response :呈现响应 ;

    servlet engine :servlet引擎

                            

                            Spring Web MVC  DispatcherServlet请求处理流程

    1.新建web项目。导入spring2.5jar包。采用tomcat6+jdk1.6启动项目。

    2.web.xml配置DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
      </servlet>
      <!-- url拦截交给DispatcherServlet -->
      <servlet-mapping>
       <servlet-name>dispatcher</servlet-name>
       <url-pattern> *.do</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    3.web中加载的applicationContext.xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <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"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
     
     <!-- 配置controller和url的映射关系 -->
     <bean id="urlMappging" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
        <props>
         <prop key="/login.do">loginController</prop>
        </props>
      </property>
     </bean>


     <!-- 配置请求的controller业务类 -->
     <bean id="loginController" class="com.pb.web.controller.LoginController">
      <property name="fromView" value="login"/>
      <property name="successView" value="showAccount"/>
     </bean>

     
     <!-- 配置jsp作为视图解析器 -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/"></property>
      <property name="suffix" value=".jsp"/>
     </bean>
    </beans>

    3.com.pb.web.controller.LoginController 类

    package com.pb.web.controller;

    import java.util.HashMap;
    import java.util.Map;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.AbstractController;

    import com.pb.entity.Account;

    public class LoginController extends AbstractController {
     private String fromView="";
     private String successView="";
     @Override
     protected ModelAndView handleRequestInternal(HttpServletRequest request,
       HttpServletResponse response) throws Exception {
      
      //1.获取账户和密码
      String cardNo = request.getParameter("cardNo");
      String password = request.getParameter("password");
      //2.调用业务逻辑层代码判断,在这里弱化controller的处理直接在controller里进行业务判断
      Account account = getAccount(cardNo, password);
      //3.根据结果返回不同的modelandview
      Map<String,Object> model = new HashMap<String,Object>();
      if(account!=null){
       model.put("account", account);
       return new ModelAndView(getSuccessView(),model);
      }else{
       model.put("message", "用户名密码错误!");
       return new ModelAndView(getFromView(),model);
      }
     }

     public Account getAccount(String cardNo,String password){
      if(cardNo.equals("123") && password.equals("123")){
       Account account = new Account();
       account.setCardNo(cardNo);
       account.setBalance(88.8f);
       return account;
      }
      return null;
     }
     
     public String getFromView() {
      return fromView;
     }

     public void setFromView(String fromView) {
      this.fromView = fromView;
     }

     public void setSuccessView(String successView) {
      this.successView = successView;
     }
     
     public String getSuccessView() {
      return successView;
     }

     public void setFromview(String successView) {
      this.successView = successView;
     }

    }

    4.login.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>登录</title>
       
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->

      </head>
     
      <body>
       ${message}
        <form action="login.do" method="post">
         
         卡号:<input type="text" name="cardNo" value=""/><br/>
         密码:<input type="password" name="password" value=""/><br/>
         <button type="submit">submit</button>
        </form>
      </body>
    </html>

    5.showAccount.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>My JSP 'showAccount.jsp' starting page</title>
       
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->

      </head>
     
      <body>
        卡号:${account.cardNo} <br/>
       余额:${account.balance }<br/>
      </body>
    </html>

  • 相关阅读:
    数据结构实验2-迷宫
    离散实验4
    关系代数中的除法运算
    数据库中什么叫象集
    (转)汇编-补码
    2014022201
    20140222
    2014022101
    代码20140221
    代码20140215
  • 原文地址:https://www.cnblogs.com/kentyouyou/p/3064618.html
Copyright © 2011-2022 走看看