`
默默的小熊
  • 浏览: 233784 次
社区版块
存档分类
最新评论

Servlet请求转发1

 
阅读更多

    写了个请求转发的程序:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>用户登录</title>
</head>

<body>
<form name="login" action="myurl6" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>&nbsp </td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
public class CheckUserInfo extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String userName = req.getParameter("name"); // 要和html文件表单对应
		String password = req.getParameter("password");

		try {
			Class.forName("com.mysql.jdbc.Driver");
			// DriverManager.registerDriver(new com.mysql.jdbc.Driver());

			String dbUrl = "jdbc:mysql://localhost:3306/mydata";
			String dbUser = "root";
			String dbPassword = "chua2007";

			Connection con = DriverManager.getConnection(dbUrl, dbUser,
					dbPassword);
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery("select * from users");

			boolean flag = false;

			while (rs.next()) {
				if (rs.getString(1).equals(userName)
						&& rs.getString(2).equals(password)) {
					req.setAttribute("msg", userName);
					flag = true;
				}
			}

			if (flag == false) {
				req.setAttribute("msg", "用户名或密码错误!");
			}

			ServletContext context = this.getServletContext();
			RequestDispatcher dispatcher = context
					.getRequestDispatcher("/myurl7");
			dispatcher.forward(req, resp);

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

}
public class Login extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String msg = (String) req.getAttribute("msg");
		resp.setContentType("text/html;charset=GB2312");

		PrintWriter out = resp.getWriter();
		out.println("<html><head><title>my title</title></head>");
		out.println("<body>");
		out.println(msg);
		out.println("</body></html>");
		// out.flush();
		out.close();
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

}

    但是无论输入正确的用户名还是错误的,客户端浏览器总是显示“用户名或密码错误”;经过检查,总算发现错误了,,浪费了很多时间,原来浏览器表单数据传输时默认是ISO-8859-1编码的,所以在CheckUserInfo获取参数时出现问题。

应该写成:

 

	req.setCharacterEncoding("GB2312");
	String userName = req.getParameter("name");  //要和html文件表单对应
	String password = req.getParameter("password");
 

 

分享到:
评论

相关推荐

    servlet中实现请求转发,用户登录

    本文将详细讲解如何在Servlet中实现请求转发以及用户登录验证。 首先,我们来理解请求转发(Request Forward)。在Servlet中,请求转发是一种在服务器内部将一个请求从一个资源传递到另一个资源的技术。这种方式是...

    servlet请求转发、重定向、包含

    Servlet请求转发、重定向和包含是Servlet中处理客户端请求的重要技术,它们都涉及到如何有效地管理用户请求和页面跳转,但各自有不同的特性和应用场景。 1. **请求转发(Request Forward)** - 请求转发是在服务器...

    java servlet请求转发重定向

    ### Java Servlet 请求转发与重定向详解 #### 一、引言 在Java Web开发中,请求转发和重定向是两种非常重要的技术手段,用于控制页面之间的跳转逻辑。这两种技术虽然都能实现页面间的跳转,但其工作原理、应用场景...

    javaServlet请求转发和重定向.pdf

    Java Servlet 请求转发和重定向 Java Servlet 请求转发和重定向是两种不同的页面跳转机制,它们在 Web 应用程序中扮演着重要的角色。理解这两种机制的区别和使用场景是非常重要的。 请求转发是指将请求再转发到另...

    Servlet转发与重定向

    1. 转发的范围:RequestDispatcher.forward 方法只能将请求转发给同一个 WEB 应用中的组件,而 HttpServletResponse.sendRedirect 方法可以重定向到当前应用程序中的其他资源,也可以重定向到同一个站点上的其他应用...

    一个servlet,请求转发,过滤

    在Java Web开发中,Servlet、请求转发和过滤器是核心概念,它们构成了Web应用程序的基础架构。下面将分别详细解释这三个知识点,并结合 `${}` 符号的使用进行深入探讨。 1. Servlet: Servlet 是 Java 提供的一种...

    Java中Request请求转发详解

    Java中Request请求转发是指在Servlet中使用RequestDispatcher将请求转发到另一个Servlet或JSP页面,以实现请求的重定向或包含。在本文中,我们将通过示例代码详细介绍Java中Request请求转发的实现过程。 ...

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    主要分为直接请求转发(Forward)和间接请求转发(Redirect)。这两种转发方式在处理请求时有着显著的区别。 直接请求转发(Forward): 直接请求转发是服务器内部的资源调度,用户在浏览器中只会看到最初的请求...

    请求转发与重定向

    Java Servlet 中可以通过 `RequestDispatcher` 的 `forward` 方法来实现请求转发。例如: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, ...

    请求转发与重定向的区别

    1. 深入理解HTTP协议:了解HTTP请求和响应的工作原理,包括状态码的意义,这对于理解请求转发和重定向如何工作至关重要。 2. 实践编程:通过编写实际的Servlet或Filter来实现请求转发和重定向,这能帮助你更好地...

    jsp和servlet请求与响应

    ### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...

    请求转发与重定向详解代码

    1. **客户端行为**:请求转发对客户端透明,客户端并不知道请求被转发了;而重定向则是客户端收到服务器的响应后,自己发起新的请求。 2. **URL显示**:转发后,浏览器地址栏的URL保持不变;重定向会导致浏览器地址...

    7.Servlet请求和响应(1).zip

    5. **请求转发与重定向**:Servlet可以使用`RequestDispatcher`的`forward()`方法将请求转发到其他资源,而`sendRedirect()`方法则会向客户端发送一个HTTP重定向响应。 6. **会话管理**:Servlet可以通过`...

    jsp页面中获取servlet请求中的参数的办法详解

    3. 使用`request.getRequestDispatcher().forward()`将请求转发给JSP页面。 4. 在JSP页面中,通过`request.getAttribute()`获取并显示参数值。 理解这些基本概念对于开发Java Web应用至关重要,这有助于构建动态、...

    Servlet请求和响应的资料,帮助初学者掌握Servlet的请求和响应

    当客户端(通常是浏览器)向Web服务器(如Apache)发送HTTP请求时,Web服务器会将请求转发给Web容器。容器解析请求,创建HttpServletRequest和HttpServletResponse对象,这两个对象分别用于存储请求信息和准备响应。...

    请求转发和重定向的区别共1页.pdf.zip

    当服务器接收到一个请求后,它可以选择不直接处理这个请求,而是通过`RequestDispatcher`对象将请求转发到另一个资源,比如Servlet或JSP页面。在这个过程中,客户端浏览器并不知道这个变化,它仍然认为自己请求的是...

    Servlet+jsp.docx

    - **请求转发**:服务器内部将请求转发到另一个资源处理。 ##### 2.1 请求方式 - **GET**:安全且幂等,适用于查询操作。 - **POST**:不安全,不幂等,适用于修改数据的操作。 ##### 2.2 重定向与请求转发 - **...

    forward方法实现请求转发

    通过该方法可以将当前请求转发到另一个资源(如Servlet或JSP页面)进行处理,并且转发过程中会保留原请求的数据和状态。这种机制对于构建复杂的应用流程非常有用,它可以帮助开发者更好地组织代码结构,提高程序的可...

Global site tag (gtag.js) - Google Analytics