Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】
- Java后端 学习路线 笔记汇总表【黑马程序员】
目录
03 请求转发和request共享数据
Request_请求转发
Request_共享数据(域对象)
04 Request_获取ServletContext
Request_获取ServletContext
05 request登录案例
登录案例_需求
登录案例_分析
登录案例_代码实现1
开发步骤1:创建项目,导入html页面,配置文件,jar包
开发步骤2:创建数据库环境
开发步骤3:创建包cn.itcast.domain,创建类User
开发步骤4:创建包cn.itcast.util,编写工具类JDBCUtils
开发步骤5:创建包cn.itcast.dao,创建类UserDao,提供login方法
测试login()方法
登录案例_代码实现2
开发步骤6: 编写cn.itcast.web.servlet.LoginServlet类
开发步骤7:编写FailServlet和SuccessServlet类
开发步骤8:login.html中form表单的action路径的写法
登录案例_BeanUtils基本使用
开发步骤9:BeanUtils工具类,简化数据封装
登录案例_BeanUtils介绍
03 请求转发和request共享数据
Request_请求转发
Request_其他功能:
1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数。
2. 请求转发:一种在服务器内部的资源跳转方式
1. 步骤:
1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
2. 特点:
1. 浏览器地址栏路径不发生变化。
2. 只能转发到当前服务器内部资源中。
3. 转发是一次请求。
Request_共享数据(域对象)
Request_其他功能:
1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数。
1. String getParameter(String name):根据参数名称获取参数值 username=zs&password=123
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game
3. Enumeration<String> getParameterNames():获取所有请求的参数名称
4. Map<String,String[]> getParameterMap():获取所有参数的map集合
2. 请求转发:一种在服务器内部的资源跳转方式
1. 步骤:
1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
2. 特点:
1. 浏览器地址栏路径不发生变化
2. 只能转发到当前服务器内部资源中。
3. 转发是一次请求
3. 共享数据:
* 域对象:一个有作用范围的对象,可以在范围内共享数据
* request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
* 方法:
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttitude(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对
4. 获取ServletContext
04 Request_获取ServletContext
Request_获取ServletContext
Request_其他功能:
1. 获取请求参数通用方式
2. 请求转发
3. 共享数据
4. 获取ServletContext:
* ServletContext getServletContext()
05 request登录案例
登录案例_需求
案例:用户登录
* 用户登录案例需求:
1.编写login.html登录页面
username & password 两个输入框
2.使用Druid数据库连接池技术,操作mysql,day14数据库中user表
3.使用JdbcTemplate技术封装JDBC
4.登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您
5.登录失败跳转到FailServlet展示:登录失败,用户名或密码错误
登录案例_分析
登录案例分析登录案例_代码实现1
开发步骤1:创建项目,导入html页面,配置文件,jar包
开发步骤2:创建数据库环境
CREATE DATABASE day14;
USE day14;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(32) UNIQUE NOT NULL,
PASSWORD VARCHAR(32) NOT NULL
);
开发步骤3:创建包cn.itcast.domain,创建类User
开发步骤4:创建包cn.itcast.util,编写工具类JDBCUtils
package cn.itcast.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import javax.xml.crypto.Data; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties;/*** JDBC工具类 使用Durid连接池*/ public class JDBCUtils {private static DataSource ds;static {try {//1.加载配置文件Properties pro = new Properties();//使用ClassLoader加载配置文件,获取字节输入流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.初始化连接池对象ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 获取连接池对象*/public static DataSource getDataSource() {return ds;}/*** 获取连接Connection对象*/public static Connection getConnection() throws SQLException {return ds.getConnection();} }开发步骤5:创建包cn.itcast.dao,创建类UserDao,提供login方法
// 调用query方法
User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), loginUser.getUsername(), loginUser.getPassword());
测试login()方法
登录案例_代码实现2
开发步骤6: 编写cn.itcast.web.servlet.LoginServlet类
LoginServlet.java:
package cn.itcast.web.servlet;import cn.itcast.dao.UserDao; import cn.itcast.domain.User; import org.apache.commons.beanutils.BeanUtils;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Map;@WebServlet("/loginServlet") public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.设置编码req.setCharacterEncoding("utf-8");/* //2.获取请求参数String username = req.getParameter("username");String password = req.getParameter("password");//3.封装user对象User loginUser = new User();loginUser.setUsername(username);loginUser.setPassword(password);*///2.获取所有请求参数Map<String, String[]> map = req.getParameterMap();//3.创建User对象User loginUser = new User();//3.2使用BeanUtils封装try {BeanUtils.populate(loginUser, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//4.调用UserDao的login方法UserDao dao = new UserDao();User user = dao.login(loginUser);//5.判断userif (user == null) {//登录失败req.getRequestDispatcher("/failServlet").forward(req, resp);} else {//登录成功//存储数据req.setAttribute("user", user);//转发req.getRequestDispatcher("/successServlet").forward(req, resp);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);} }开发步骤7:编写FailServlet和SuccessServlet类
SuccessServlet.java:
package cn.itcast.web.servlet;import cn.itcast.domain.User;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;@WebServlet("/successServlet") public class SuccessServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取request域中共享的user对象User user = (User) request.getAttribute("user");if(user != null){//给页面写一句话//设置编码response.setContentType("text/html;charset=utf-8");//输出response.getWriter().write("登录成功!"+user.getUsername()+",欢迎您!");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);} }FailServlet.java:
package cn.itcast.web.servlet;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;@WebServlet("/failServlet") public class FailServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//给页面写一句话//设置编码response.setContentType("text/html;charset=utf-8");//输出response.getWriter().write("登录失败,用户名或密码错误!");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);} }开发步骤8:login.html中form表单的action路径的写法
登录案例_BeanUtils基本使用
开发步骤9:BeanUtils工具类,简化数据封装
登录案例_BeanUtils介绍
BeanUtils工具类,简化数据封装
* 用于封装JavaBean的
1. JavaBean:标准的Java类
1. 要求:
1. 类必须被public修饰
2. 必须提供空参的构造器
3. 成员变量必须使用private修饰
4. 提供公共setter和getter方法
2. 功能:封装数据
2. 概念:
成员变量:
属性:setter和getter方法截取后的产物
例如:getUsername() --> Username--> username
3. 方法:
1. setProperty()
2. getProperty()
3. populate(Object obj, Map map):将map集合的键值对信息,封装到对应的JavaBean对象中
总结
以上是生活随笔为你收集整理的Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Request和Response-学习笔
- 下一篇: 美赛最新通知:论文接收状态已更新完毕!