闲话少说,开始正题。
简单项目结构如图:
JSP到Servlet示例:JSP的form表单传值。
我们需要实现的是:当用户点击“新增”按钮之后,将写入的数据,传递到另一个页面。
1 .首先我们需要做一个简单的add.jsp页面。在body里写form表单。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${ctx}/Servlet/UserServlet" method="post">
姓名:<input type="text" name="username" id="username" class="username">
密码:<input type="text" name="password" id="password" class="password">
<input type="submit" value="新增">
</form>
</body>
</html>
效果如下:
看这里,action无需赘述,也就是请求路径。这里注明了方法是“post”。这是两个关键点。
2.servlet代码示例,下面就是通过servlet来接收JSP传过来的数据。
package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 通过request.getParamter(参数)方法来获取
// 参数为JSP form表单所对应的name值
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("输入的用户名:" + username + ",输入的密码:" + password);
// 通过request.setAttribute(参数,值)方法设置
request.setAttribute("username", username);
request.setAttribute("password", password);
// 通过request.getRequestDispatcher("路径").forward(request,
// response)方法来把设置好的参数传到jsp去
request.getRequestDispatcher("MyJsp.jsp").forward(request, response);
}
}
这里我们运用了dopost方法,因为add页面就是用的post请求。注释@Webservlet("/UserServlet")
写一个跳转的页面MyJsp.jsp 来用 EL表达式接收 过来的值。
el表达式就是“${}”这样子,里面写对应的 参数就行。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${username} <br>
${password}
</body>
</html>
页面输入:
点击“新增”;
这里看到我输入的汉字出现了乱码。这也是一个需要注意的地方,这个时候我们就需要在servlet里面设置
request.setCharacterEncoding("UTF-8");
来设置一下请求的字符编码。页面的不需要设置,因为在页面上已经设置过了。
就是这段、
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
如果不放心,就再加一个:response.setContentType("text/html; charset=UTF-8");
最后的结果:
。
好了,简单的传值就这样,理解了吗?