jsp页面通过表单的方式提交请求,并传进后台参数,servlet接收请求再返回页面显示。
1.jsp页面代码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="com.service.entity.*,java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>学生信息</title>
</head>
<body>
<style type="text/css">
table.dataintable {
margin-top:15px;
border-collapse:collapse;
border:1px solid #aaa;
width:100%;
}
table.dataintable th {
vertical-align:baseline;
padding:5px 15px 5px 6px;
background-color:#3F3F3F;
border:1px solid #3F3F3F;
text-align:left;
color:#fff;
}
table.dataintable td {
vertical-align:text-top;
padding:6px 15px 6px 6px;
border:1px solid #aaa;
}
table.dataintable tr:nth-child(odd) {
background-color:#F5F5F5;
}
table.dataintable tr:nth-child(even) {
background-color:#fff;
}
</style>
<form action ="StudentServlet" method="get">
输入姓名:<input type="text" name="name"/>
<input type="submit" value="查询" />
</form>
</div>
<table class="dataintable">
<tr>
<th>姓名</th>
<th>语文</th>
<th>数学</th>
<th>英语</th>
</tr>
<c:forEach items="${list}" var="stu">
<tr>
<td><b>${stu.getName()}</b></td>
<td>${stu.getChinese()}</td>
<td>${stu.getMath()}</td>
<td>${stu.getEnglish()}</td>
</tr>
</c:forEach>
</body>
</html>
首先编码都是utf-8,所以开头需要修改:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="com.service.entity.*,java.util.*"%>
import="com.service.entity.*,java.util.*是引入了Java包,来访问对象的成员变量。
<c:forEach items="${list}" var="stu">
<tr>
<td><b>${stu.getName()}</b></td>
<td>${stu.getChinese()}</td>
<td>${stu.getMath()}</td>
<td>${stu.getEnglish()}</td>
</tr>
</c:forEach>
然后jsp引入了c:forEach,所以需要加:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
加了之后需要引入两个jar包,可以去下载jstl.jar+standard.jar两个包
2.Java Servlet代码
package com.service.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.service.StudentService;
@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// 处理响应数据的格式和编码,通知浏览器数据的显示方式
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("doGet!");
System.out.println ("doGet1");
String Name=request.getParameter("name");
StudentService ws = new StudentService();
List list = ws.GetStudentInfo(Name);
request.setAttribute("list",list);
request.getRequestDispatcher("/student.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
首先@WebServlet("/StudentServlet")是web.xml配置的servlet名
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>StudentServlet</servlet-name>
<servlet-class>com.service.servlet.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudentServlet</servlet-name>
<url-pattern>/service</url-pattern>
</servlet-mapping>
</web-app>
和jsp文件里:
这三个地方的这个名字是一一对应的,不能写错。
还有就是,传进来的参数:
这就整个请求->接收请求->处理请求->返回的过程。
最后结果展示: