一、前端页面传值给Servlet
(1)form表单
jsp页面编写代码:
//method:传值方式,“get”或“post”,
//get方法:传值可以url中对用户可见,不利于数据的安全性。
//post方法:传值方式用户不可见,利于数据安全。
//action:Servlet文件在项目中的地址。
<form method="post" action="servlet/RegisteredServlet">
//要传输的值,以input为例
//“name”:后台Servlet获取值得表示
<input type="text" placeholder="用户名" name="Name"/>
<input type="Password" placeholder="密码" name="Password"/>
//使用按钮来递交
<input type="submit" value="登录"/>
</form>
Servlet中使用:“request.getParameter("Name");”获取对应的数值。""内的值与jsp页面中name标签的值一致。
(2)url
<a>标签的 href属性:其值得内容与action内容一样。例如“servlet/SelectServlet?Name=值”。
Servlet中使用:“request.getParameter("Name");”获取。
二、Servlet传值给jsp页面
(1)request.setAttribute()方法
Servlet代码:
//要传递的值,例如Error
request.setAttribute("Error", Error);
//要传递的页面路径,例如/jsp/Registered.jsp
//"forward":实现跳转
request.getRequestDispatcher("/jsp/Registered.jsp").forward(request,response);
页面中使用${传递的值}获取。
(2)json
Servlet中将数据分装为json格式。
Servlet代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
StringBuffer json = new StringBuffer();
String a = "\"";
json.append("[");
try {
response.setContentType("text/json");
DeviceDAO device = new DeviceDAO();
ResultSet rs = device.selectDevices();
while (rs.next()) {
json.append("{");
json.append(a).append("ID").append(a).append(":").append(a).append(rs.getString("ID")).append(a).append(",");
json.append(a).append("Num").append(a).append(":").append(a).append(rs.getString("Type")).append(a).append(",");
json.append(a).append("Address").append(a).append(":").append(a).append(rs.getString("Address")).append(a).append(",");
json.append(a).append("BuildTime").append(a).append(":").append(a).append(rs.getString("Time")).append(a).append(",");
json.append(a).append("IsWork").append(a).append(":").append(a).append(rs.getString("Status")).append(a);
json.append("},");
}
} catch (Exception e) {
e.printStackTrace();
}
//删除最后一次循环中出现的那个逗号
json.deleteCharAt(json.length() - 1);
json.append("]");
PrintWriter outputStream = response.getWriter();
System.out.println(json);
//搞完把json打印在本Servlet上,之后前台页面读这页的内容就可以了
outputStream.println(json.toString());
outputStream.close();
}
页面使用Ajax获取:
jsp代码:
$.ajax({
url:"servlet/SeekdeviceServlet",
type:"post",
contentType: "text/json,charset=utf-8",
dataType:"text",
success : function(data) {
data = eval(data);
//构造前先清空源节点
document.getElementById("data").innerHTML = "";
//设置一个文件碎片
var frag = document.createDocumentFragment();
//frag.appendChild(tr);
//利用循环构造表格的每一行,把其放在文件碎片上面
for (var i = 0; i < data.length; i++) {
var tr = document.createElement("tr");
tr.innerHTML = "<td>" + data[i].ID + "</td><td>"
+ data[i].Num + "</td><td>"
+ data[i].Address + "</td><td>"
+ data[i].BuildTime + "</td><td>"
+ data[i].IsWork + "</td>";
var td = document.createElement("td");
td.innerHTML = "<button οnclick='deleteRow(this);' style='text-align: center;border-left: 1px solid black;border-top: 1px solid black;'>删除</button>";
td.className = "ListStyle";
tr.appendChild(td);
frag.appendChild(tr);
}
//此时文件碎片已经是一张表了,直接放网页就可以了
document.getElementById("data").appendChild(frag);
},error : function() {
alert("出错了");
}
})