Java in Tarena_Spring Note04

Spring–Day04

上午:
1、通过注释@RequestMapping和@Controller读取请求参数的三种方法
1.1、通过request对象
1.2、通过同名参数
1.3、通过javabean
2、通过注释@RequestMapping和@Controller向页面传值的四种方法
2.1、通过request对象
2.2、通过session对象
2.3、通过ModelAndView对象
2.4、通过ModelMap对象
3、练习:见附录
下午:
1、注释@RequestMapping和@Controller–重定向的使用
2、通过Spring_MVC的思路完成Netctoss项目(上)

———————————————–上午部分—————————————————-

读取请求参数

1、通过request对象

@RequestMapping("/login.do")
    /*
     * 使用request读取请求参数值
     */
    public String checkLogin(
            HttpServletRequest request){
        System.out.println("LoginController的checkLogin方法...");
        String username=
            request.getParameter("username");
        String pwd=
            request.getParameter("pwd");
        System.out.println("username:"+username+"pwd:"+pwd);
        return "success";
    }

2、通过同名的参数

/*
     * 读取请求参数的第二种方法:
     * 将处理方法的参数名设置为请求参数名。
     */
    @RequestMapping("/login2.do")
    public String checkLogin2(String username,@RequestParam("pwd")String password){
        System.out.println("checkLogin2方法..");
        System.out.println("username:"+username+"pwd:"+password);
        return "success";
    }

3、通过javabean

@RequestMapping("/login3.do")
    /*
     * 读取请求参数的第三种方式:
     * 使用javabean。
     */
    public String checkLogin3(User user){
        System.out.println("checkLogin3..");
        String username =
            user.getUsername();
        String pwd = 
            user.getPwd();
        System.out.println("username:"+username+"pwd:"+pwd);
        return "success";
    }

向页面传值

1、通过request对象

/*
     * 向页面传值的第一种方式:
     * 使用request对象。
     */
    @RequestMapping("/login4.do")
    public String checkLogin4(
            HttpServletRequest request, 
            User user){
        System.out.println("checkLogin4方法...");
        request.setAttribute("status", "success");
        request.setAttribute("username", user.getUsername());
        return "success";
    }

2、通过session对象

@RequestMapping("/login5.do")
    public String checkLogin5(
            HttpSession session,User user){
        /*
         * 向页面传值的第二种方式:
         * 使用session。
         */
        System.out.println("checkLogin5方法..");
        session.setAttribute("status", "success");
        session.setAttribute("username",user.getUsername());
        return "success";
    }

3、通过ModelAndView对象

/*
     * 向页面传值的第三种方式:
     * 使用ModelAndView。
     */
    @RequestMapping("/login6.do")
    public ModelAndView checkLogin6(
            User user){
        System.out.println("checkLogin6的方法");
        Map<String,Object> data = 
            new HashMap<String,Object>();
        //相当于request.setAttribute...
        data.put("status","success");
        data.put("username",user.getUsername());
        return  new ModelAndView("success",data);
    }

4、通过ModelMap对象

/*
     * 向页面传值的第四种方式:
     * 使用ModelMap对象。
     */
    @RequestMapping("/login7.do")
    public String checkLogin7(User user,
            ModelMap data){
        System.out.println("checking7的方法..");
        //相当于request.setAttribute...
        data.addAttribute("status","success");
        data.addAttribute("username",user.getUsername());
        return "success";
    }

———————————————–下午部分—————————————————-
重定向
*处理方法返回值是String

        return "redirect:toLogin.do";

*处理方法返回值是ModelAndView

        RedirectView rc =
                new RedirectView("toLogin.do");
        return new ModelAndView(rc);

在LoginController里添加方法:

@RequestMapping("/login8.do")
public String checkLogin8(User user,ModelMap data){
    System.out.println("checkLogin8方法...");
}

—-Spring MVC应用 ___Netctoss项目—————15:20

准备工作:
1、创建web工程(spring-netctoss)
2、导包:

  • spring mvc 相关的jar文件
  • jdbc jar文件
  • dataSource相关的jar文件
    这里写图片描述

3、spring配置文件(spring-mvc.xml)
4、配置DispatcherServlet(web.xml)
5、Admin实体类

package com.tarena.oss.entity;

import java.sql.Timestamp;


/*
 * 实体类
 * 与要访问的表的结构保持一致
 */
public class Admin {
    private Integer adminId;
    private String adminCode;
    private String password;
    private String name;
    private String telephone;
    private String email;
    private Timestamp enrolldate;
    public Integer getAdminId() {
        return adminId;
    }
    public void setAdminId(Integer adminId) {
        this.adminId = adminId;
    }
    public String getAdminCode() {
        return adminCode;
    }
    public void setAdminCode(String adminCode) {
        this.adminCode = adminCode;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTelephone() {
        return telephone;
    }
    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Timestamp getEnrolldate() {
        return enrolldate;
    }
    public void setEnrolldate(Timestamp enrolldate) {
        this.enrolldate = enrolldate;
    }
}

6.编写Admin.Dao

package com.tarena.oss.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.stereotype.Repository;

import com.tarena.oss.entity.Admin;

/**
 * 
 * DAO类
 *  封装了数据库操作。
 *  资源池
 * 注:
 *  DAO属于数据访问层,一般使用
 *  @Repository注解。
 */
@Repository("adminDAO")
public class AdminDao {
    @Resource(name="ds1")
    //使用依赖注入的方式,注入DataSource
    private DataSource ds;
    public Admin findByAdminCode(
            String adminCode) throws SQLException{
        Admin admin = null;
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet rst = null;
        try{
            conn = ds.getConnection();
            String sql = 
                "SELECT * FROM admin_info_moy " +
                "WHERE admin_code=?";
            stat = conn.prepareStatement(sql);
            stat.setString(1, adminCode);
            rst = stat.executeQuery();
            if(rst.next()){
                Admin a = new Admin();
                a.setAdminId(rst.getInt("admin_id"));
                a.setAdminCode(rst.getString("admin_code"));
                a.setPassword(rst.getString("password"));
                a.setName(rst.getString("name"));
                a.setTelephone(rst.getString("telephone"));
                a.setEmail(rst.getString("email"));
                a.setEnrolldate(rst.getTimestamp("enrolldate"));
                return a;
            }
        } catch (SQLException e){
            //记日志(保留现场)
            e.printStackTrace();
            /*
             * 看异常能否恢复,如果
             * 不能恢复(发生了系统异常:
             * 比如数据库服务暂停),则
             * 提示用户稍后重试。
             */
            throw e;
        } finally {
            if(conn!=null){
                conn.close();
            }
        }
        return admin;
    }

}

7.配置db.properties文件(提供数据库连接信息)

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.0.206:1521:oracle
username=jsd1512
password=jsd1512

8.编写配置文件 spring-mvc.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: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"/>
    <!-- 开启springmvc注解扫描 -->
    <mvc:annotation-driven/>
    <!-- 配置视图解析器ViewResolver -->
    <bean id="jspViewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 读取properties文件的内容 -->
    <util:properties 
    id="jdbc"
    location="classpath:db.properties"/>
    <!-- 配置DataSource -->
    <bean id="ds1" 
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="url" value="#{jdbc.url}"/>
        <property name="driverClassName" value="#{jdbc.driver}"/>
        <property name="username" value="#{jdbc.username}"/>
        <property name="password" value="#{jdbc.password}"/>
    </bean>     
</beans>

17:00

附录

练习:
计算一个人的bmi指数。
算法:
bmi指数=体重(KG)/身高(m)/身高(m)
如果bmi指数>24,过重,
否则 正常。

bmiController.java

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class bmiController {

    @RequestMapping("/bmi.do")
    public String bmitest(){
        System.out.println("bmiController的" +
        "bmitest方法..");
        return "bim";
    }
    @RequestMapping("/show.do")
    public String show(String weight,String height){
        System.out.println("bmiController的" +
                "show方法..");
        double wt = Double.parseDouble(weight);
        double ht = Double.parseDouble(height);
        System.out.println(wt);
        System.out.println(ht);
        if(wt/(ht*ht)<=24.0){
            return "Nomal";
        }else{
            return "Upweight";
        }
    }
    @RequestMapping("/show2.do")
    public String show2(user p,ModelMap data){
        System.out.println("bmiController的" +
                "show2方法..");
        double ht=p.getHeight();
        double wt=p.getWeight();
        if((wt/(ht*ht))<=24.0){
            data.addAttribute("state","正常的");
        }else{
            data.addAttribute("state","过重了");
        }
        return "Nomal";
    }
}

bim.jsp

<%@page pageEncoding="utf-8"%>
<html>
    <head></head>
    <body sytle="font-size:30px;">
        <form action="show.do" method="post">
            <fieldset>
                <legend>Bmi测试</legend>
                体重:<input name="weight"/><br/>
                身高: <input name="height"/><br/>
                <input type="submit" value="查看"/>
        </form>
    </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值