zoukankan      html  css  js  c++  java
  • Unit04: 实战技巧 、 登录

        Unit04: 实战技巧 、 登录    

    使用注解方式简化Unit04的小程序。

    1. 基于注解的springmvc应用程序的开发

    (1)编程步骤

    step1. 导包。
    step2. 添加spring配置文件。
    step3. 配置DispatcherServlet。
    step4. 写Controller。


    a. 不用实现Controller接口了。
    b. 可以添加多个方法。
    c. 方法名不做要求,返回类型可以是ModelAndView,也可以String。
    d. 使用@Controller注解。(不用配置bean了)。
    e. 使用@RequestMapping注解。(不用配置HandlerMapping了)。

    step5. 写jsp。
    step6. 配置组件扫描和视图解析器。

    (2)读取请求参数值

    方式一 通过request对象

    方式二 通过 @RequestParam注解

    方式三 封装成javabean

    step1. 写一个java类,要求见图示:

    step2.在方法中,添加该javabean作为方法参数。

    (3) 向页面传值

    方式一 绑订数据到request对象

    方式二 返回ModelAndView对象

    方式三 利用ModelMap对象

    方式四 绑订数据到session对象

    (4) 重定向

    情形一 如果方法的返回值是String

    情形二 如果方法的返回值是ModelAndView

    案例

    src/main/java

    controller

    package controller;
    /**
     *     用于封装请求参数值的javabean。
     *
     */
    public class AdminParam {
        private String adminCode;
        private String pwd;
        public String getAdminCode() {
            return adminCode;
        }
        public void setAdminCode(String adminCode) {
            this.adminCode = adminCode;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        
    }
    AdminParam.java
    package controller;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.view.RedirectView;
    
    /**
     * 处理器类
     *
     */
    @Controller
    public class HelloController {
        
        @RequestMapping("/hello.do")
        public String hello(){
            System.out.println("hello()");
            //返回视图名
            return "hello";
        }
        
        @RequestMapping("/toLogin.do")
        public String toLogin(){
            System.out.println("toLogin()");
            return "login";
        }
        
        @RequestMapping("/login.do")
        /*
         * DispatcherServlet在调用处理器方法
         * 之前,会分析方法的结构(使用反射机制),
         * 如果发现需要一个request对象,则
         * DispatcherServlet会将request对象传递
         * 进来。(了解)
         */
        public String login(
                HttpServletRequest request){
            System.out.println("login()");
            String adminCode = 
                request.getParameter("adminCode");
            System.out.println("adminCode:"
                + adminCode);
            return "index";
        }
        
        @RequestMapping("/login2.do")
        /**
         * 建议在每一个形参前,都添加上@RequestParam。
         */
        public String login2(
                @RequestParam("adminCode") 
                String code,
                String pwd){
            System.out.println("login2()");
            System.out.println("adminCode:"
                    + code);
            return "index";
        }
        
        @RequestMapping("/login3.do")
        public String login3(AdminParam ap){
            System.out.println("login3()");
            System.out.println("adminCode:" 
            + ap.getAdminCode());
            return "index";
        }
        
        @RequestMapping("/login4.do")
        public String login4(AdminParam ap,
                HttpServletRequest request){
            System.out.println("login4()");
            System.out.println("adminCode:" 
                    + ap.getAdminCode());
            //绑订数据到request对象
            request.setAttribute("adminCode", 
                    ap.getAdminCode());
            //DispatcherServlet默认使用转发
            return "index";
        }
        
        @RequestMapping("/login5.do")
        public ModelAndView login5(AdminParam ap){
            System.out.println("login5()");
            System.out.println("adminCode:" 
                    + ap.getAdminCode());
            /*
             * 将处理结果添加到ModelAndView对象里面。
             * ModelAndView(String viewName,Map data)
             */
            Map<String,Object> data = 
                    new HashMap<String,Object>();
            //相当于request.setAttribute(
            //"adminCode",ap.getAdminCode());
            data.put("adminCode", 
                    ap.getAdminCode());
            ModelAndView mav = 
                    new ModelAndView("index",data);
            return mav;
        }
        
        @RequestMapping("/login6.do")
        public String login6(AdminParam ap,
                ModelMap mm){
            System.out.println("login6()");
            System.out.println("adminCode:" 
                    + ap.getAdminCode());
            //将数据添加到ModelMap对象
            //相当于执行了request.setAttribute
            mm.addAttribute("adminCode",
                    ap.getAdminCode());
            return "index";
        }
        
        @RequestMapping("/login7.do")
        public String login7(AdminParam ap,
                HttpSession session){
            System.out.println("login7()");
            System.out.println("adminCode:" 
                    + ap.getAdminCode());
            //绑订数据到session对象
            session.setAttribute("adminCode",
                    ap.getAdminCode());
            return "index";
        }
        
        @RequestMapping("/login8.do")
        public String login8(){
            System.out.println("login8()");
            return "redirect:toIndex.do";
        }
        
        @RequestMapping("/login9.do")
        public ModelAndView login9(){
            System.out.println("login9()");
            RedirectView rv = 
                    new RedirectView("toIndex.do");
            ModelAndView mav = 
                    new ModelAndView(rv);
            return mav;
        }
        
        @RequestMapping("/toIndex.do")
        public String toIndex(){
            return "index";
        }
        
        
        
        
        @RequestMapping("/toBmi.do")
        public String toBmi(){
            System.out.println("toBmi()");
            return "bmi";
        }
        
        @RequestMapping("/bmi.do")
        public String bmi(
                HttpServletRequest request){
            System.out.println("bmi()");
            String height = 
                request.getParameter("height");
            String weight = 
                request.getParameter("weight");
            double bmi = 
                Double.parseDouble(weight) /
                Double.parseDouble(height)/
                Double.parseDouble(height);
            String status = "正常";
            if(bmi < 19){
                status = "过轻";
            }
            if(bmi > 25){
                status = "过重";
            }
            request.setAttribute("status", status);
            return "view";
        }
    
    }
    HelloController.java

    src/main/resources

    <?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:context="http://www.springframework.org/schema/context" 
        xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
        xmlns:jee="http://www.springframework.org/schema/jee" 
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
            http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
        <!-- 配置组件扫描 -->
        <context:component-scan 
        base-package="controller"/>
        <!-- 配置视图解析器 -->
        <bean
         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/> 
        <property name="suffix" value=".jsp"/> 
        </bean> 
        
        
    </beans>
    spring-mvc.xml

    WEB-INF

    <%@ page 
     contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <html>
    <head>
    </head>
    <body style="font-size:30px;">
        <form action="bmi.do" method="post">
            身高(米):<input name="height" /><br/>
            体重(公斤):<input name="weight" /><br/><br/>
            <input type="submit" value="确定"/>
        </form>
    
    </body>
    </html>
    bmi.jsp
    <h1>Hello,SpringMVC</h1>
    hello.jsp
    <h1>index</h1>
    <h1>${adminCode}</h1>
    index.jsp
    <%@ page    
    contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <html>
    <head>
    </head>
    <body style="font-size:30px;">
        <form action="login9.do" method="post">
            帐号:<input name="adminCode" /><br/>
            密码:<input type="password" 
            name="pwd"/><br/>
            <input type="submit" value="登录"/>
        </form>
    
    </body>
    </html>
    login.jsp
    <%@ page 
     contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <html>
    <head>
    </head>
    <body style="font-size:30px;">
            ${status}
    </body>
    </html>
    view.jsp
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 
             DispatcherServlet的初始化方法在执行时,
             会启动spring容器。
             contextConfigLocation负责指定spring
             配置文件的位置。
         -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
      
    </web-app>
    web.xml
      <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</artifactId>
              <version>3.2.8.RELEASE</version>
          </dependency>
      </dependencies>
    pom.xml
  • 相关阅读:
    Redis-Sp:Redis主要功能
    Redis-Sp:Redis介绍
    阿里云-Redis-Help-连接实例-Redis客户端连接:C#客户端StackExchange.Redis
    Samba通过ad域进行认证并限制空间大小《转载》
    SQL函数简述
    SELECT--UNION,UNION ALL,MINUS, INTERSECT,EXISTS
    oracle数据库常用查询一
    oracle以web方式登录EM、ISQLPlus
    关于sys、system、sysman等在EM中登录的问题
    top 命令SQLServer-sybase-oracle
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6498839.html
Copyright © 2011-2022 走看看