首页 > 代码库 > Unit04: 实战技巧 、 登录
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; } }
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 = http://www.mamicode.com/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"; } }
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>
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>
<h1>Hello,SpringMVC</h1>
<h1>index</h1> <h1>${adminCode}</h1>
<%@ 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>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html> <head> </head> <body style="font-size:30px;"> ${status} </body> </html>
<?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>
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.8.RELEASE</version> </dependency> </dependencies>
Unit04: 实战技巧 、 登录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。