java servlet 和http_[转]servletHttpServletRequest 和HttpServletResponse

一:HttpServletRequest

request对象是请求对象。请求一次就创建一个request对象,并且存储了请求的信息。所以在表单提交中,我们可以通过request对象获取用户提交的所有信息。详见下文。

常用方法:

request.getContextPath()

获取根路径。

request.getParameter("name")

根据name获取value值

request.getParameterNames("name")

根据name获取一组值,如多选框

request.getRequestURL();

获取请求的url

request.getRequestDispatcher("路径").forward(request,response)

转发是一次请求

request.getCookie();获取请求中的cookie

request.getSession(true)获取session。

默认参数为true表示如果没有获取到,则重新创建并返回;false如果没有获取到,返回null

前面说过servletcontext也可以传递数据,只不过servletcontext对象是wep项目的上下文环境,可以多个servlet之间传递数据,也可以跨用户传递数据,更能跨请求传递数据;而request对象则没有那么大功能,它不能跨请求传递数据,也不能跨用户传递数据,只能跨servlet传递数据

二:HttpServletResponse

response对象是相应对象。 可以说根request对象是一对,有请求就要有相应。

常用方法

response.setContentType("text/html;charset=gb18030");设置相应编码,解决中文乱码问题

response.getWriter();

获取响应流,用户打印在浏览器界面上

response.sendRedirect("路径)

重定向。重定向根转发的区别是:重定向是两次请求,转发是一次请求。

response.addCookie(cookie)

相应cookie到浏览器客户端

三:转发和重定向

1:转发是request对象实现:request.getRequestDispatcher("路径").forward(request,response)

重定向是request对象实现的: response.sendRedirect("路径)

2:转发是一次请求,重定向是两次请求。所谓一次请求是从浏览器开始请求,服务器响应,到结束响应。

转发只能在一个web项目内跳转。转发过程中浏览器标题栏上面始终显示开始的地址。

重定向能在不同项目间跳转,从这个项目的一个界面可以跳转到另一个项目的一个界面,所以重定向的路径是有项目名称的,而转发路径不用带项目名称。由于重定向是两次请求所以浏览器标题栏上面的地址会改变。

3:转发的用处:传递数据,由于转发过程中传递了request,response对象,所以达到数据传递的作用;页面刷新问题,由于转发过程中浏览器的URL地址是开始时的,如果重新加载该页面的话,操作又会被重新调用。

重定向:不同web项目之间的跳转;解决重复重复刷新界面问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较常见的需求,以下是一个简单的示例代码,供参考: 1. 创建一个 User 类,用于存储用户信息。 ```java public class User { private String username; private String password; // 其他用户信息字段 // 构造方法、getter 和 setter 略 } ``` 2. 创建一个 UserDao 类,用于操作用户信息(如保存到数据库、查询等)。 ```java public class UserDao { public void save(User user) { // 将用户信息保存到数据库 } public User findByUsername(String username) { // 根据用户名查询用户信息 return null; } // 其他操作略 } ``` 3. 创建一个注册页面 register.jsp,包含一个表单,用户填写用户名、密码等信息。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <h1>用户注册</h1> <form action="register" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="注册"> </form> </body> </html> ``` 4. 创建一个 RegisterServlet 类,用于处理用户提交的注册信息。 ```java public class RegisterServlet extends HttpServlet { private UserDao userDao = new UserDao(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户提交的信息 String username = request.getParameter("username"); String password = request.getParameter("password"); // 创建 User 对象,并保存到数据库 User user = new User(username, password); userDao.save(user); // 注册成功,重定向到登录页面 response.sendRedirect("login.jsp"); } } ``` 5. 创建一个登录页面 login.jsp,包含一个表单,用户填写用户名、密码等信息。 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户登录</title> </head> <body> <h1>用户登录</h1> <form action="login" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html> ``` 6. 创建一个 LoginServlet 类,用于处理用户提交的登录信息。 ```java public class LoginServlet extends HttpServlet { private UserDao userDao = new UserDao(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户提交的信息 String username = request.getParameter("username"); String password = request.getParameter("password"); // 根据用户名查询用户信息 User user = userDao.findByUsername(username); // 验证用户信息 if (user != null && user.getPassword().equals(password)) { // 登录成功,将用户信息保存到 session 中 request.getSession().setAttribute("user", user); // 跳到主页 response.sendRedirect("index.jsp"); } else { // 登录失败,跳回登录页面,并显示错误信息 request.setAttribute("error", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } ``` 以上是一个简单的示例,实际应用中可能需要更多的验证和处理,也可以根据具体需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值