jsp
Jsp (javaServer page)
主要是用来接收客户端的请求,然后对此jsp文件进行编译生成一个servlet文件,然后再执行编译之后的文件,处理之后得到对应的处理之后的资源,然后将资源返还给客户端,中间就涉及到客户端和服务器之间值的传递,那么可以采用的方式二种,一种是在传递的地址栏进行拼接传值 一种是使用jsp的内置对象进行传值
<a href="secondtest.jsp?name=admin"></a> |
<form action="secondtest.jsp">
<input type="text" name="name" value="admin">
<input type="submit" value="提交"/>
</form>
|
在secondtest页面接收值都采用
<%=request.getParameter("name")%> |
Jsp的内置对象有9个
request, response, out, session, application, config, pagecontext, page, exception.
1 request对象
主要是当客户端向服务端发送数据的时候,将传递的值放在request对象中去,服务端接收到客户端的请求,可以从request对象中取出客户端传递过来的值
Request是ServletRequest对象 ,那么我们需要创建对应的请求对象来接收客户端的值
<body>
<form action="test.jsp" method="post">
用户名:<input type="text" name="uname"/>
<input type="submit" value="提交"/>
</form>
</body>
|
Test.jsp
<body>
页面传递过来的值通过从request对象中取出:
<%
String name=request.getParameter("uname");
%>
<%=name%>
</body>
|
如果以后服务端接收客户端的值出现了中文乱码,那么就需要对接收过来的乱码值进行转码
String n=new String(name.getBytes("iso-8859-1"),"gbk"); |
常用到的一些request请求的方法 ,可以获取到一些资源
. request的设置和取值:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!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=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
//往request对象中放值
request.setAttribute("s,","ibm");
request.setAttribute("a","admin");
%>
<%
//从rquest对象中取值
String s = (String)request.getAttribute("s");
String n = (String) request.getAttribute("a");
%>
s的值:<%=s%>
n的值:<%=n%>
</body>
</html>
|
传递表单,常规获值和枚举获取值:
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<form action="requestDemo06.jsp" method="post">
用户名:<input type="text" name="uname" /><br/>
性 别:<input type="radio" name="sex" value="boy" />男
<input type="radio" name="sex" value="girl" />女<br/><br/>
班 级:<select name="classes">
<option value="one">一年级</option>
<option value="two">二年级</option>
<option value="three">三年级</option>
<option value="four">四年级</option>
</select><br/><br/>
说 明:<br/><br/><textarea cols="10" rows="5" name="manyinfo">
</textarea><br/><br/>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</form>
</body>
</html>
|
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<%
//接收客户端表单提交过来的值
//取到用户名
String name=request.getParameter("uname");
//接收性别
String sex=request.getParameter("sex");
//接收班级
String classes=request.getParameter("classes");
//接收说明的值
String info=request.getParameter("manyinfo");
//返回所有可用参数名的枚举
java.util.Enumeration en =request.getParameterNames();
while(en.hasMoreElements()){
%>
<% String str=(String)en.nextElement();
%>
<%=str%>
<%}%>
性别: <%=name%>性别:<%=sex%>班级:<%=classes%>信息:<%=info%>
姓名:<%=name%><br/>
性别:<%=sex%><br/>
班级:<%=classes%><br/>
说明:<%=info%><br/>
</body>
</html>
|
|
Request常用方法:
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<%
//设置request对象的编码格式为GB2312
response.setCharacterEncoding("gb2312");
//得到客户端的请求协议
String col = request.getProtocol();
//返回请求的计划名
String hh = request.getScheme();
//获取客户端的IP
String ip = request.getRemoteAddr();
//获取上下文路径
String contextPath = request.getContextPath();
//获取请求路径
String rpath = request.getRequestURI();
//获取客户端请求的端口号
int port = request.getServerPort();
//得到request对象的编码格式
String ce= request.getCharacterEncoding();
%>
<%=col%><br>
<%=hh%><br>
<%=ip%><br>
<%=contextPath%><br>
<%=rpath%><br>
<%=port%>
</body>
</html>
|
Response:
Login.jsp: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<form action="main.jsp" method="post">
用户名:<input type="text" name="uname" />
密码:<input type="password" name="upass" />
<input type="submit" value="提交"/>
</form>
</body>
</html>
|
Main.jsp: |
<html>
<title>无标题文档</title>
</head>
<body>
<%
//接收客户端提交过来的用户名和密码
String name = request.getParameter("uname");
String pass = request.getParameter("upass");
//对客户端传递过来的用户名和密码进行判断
if(name.equals("admin")&&pass.equals("123")){
//如果用户名和密码为admin和123
//那么跳转到成功页面
response.sendRedirect("success.jsp?aa="+name);
}else{
//登录失败,重新跳转到登录页面
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
|
Success.jsp: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
login success
<%
String name=request.getParameter("aa");
%>
<%=name%>
</body>
</html>
|
自动刷新: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<%
//设置对此页面每秒刷新一次,并且记录刷新的次数
//定义全局变量
%>
<%!
//定义全局变量
int count=0;
//设置每秒中刷新一次
%>
<%
// response.setHeader("refresh","2");
response.setHeader("refresh","3;URL=login.jsp");
%>
3秒钟之后自动跳转到login.jsp页面,如果不跳转请点击<a href="login.jsp">这里</a>
显示全局变量,并且对全局变量自增<%=count++%>
reponse是httpServletResponse接口的引用对象父接口是HttpServlet主要
是用来从服务器端到客户端的 可以给客户端设置头信息,可以控制页面跳转,
并且传递相应的值过去
</body>
</html>
|
字符输出流: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<%
//服务器给客户端返回一个字符的输出流回来
java.io.PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("返回输出流");
pw.println("</html>");
pw.flush();
pw.close();
%>
</body>
</html>
|
|
Session:
创建的session是HttpSession接口的对象
创建的session表示的是一次会话,也就是如果你开启一个客户端,表示的是你这个客户端与服务器一次会话,客户端一般是浏览器,服务端是服务器,当我们开启一个浏览器表明会话开始,那我们就可以往session对象中存值,存值的方式是以key和value的形式进行设置,只要浏览器不关闭,会话就不结束,那么我们就可以一直从session对象中取值
我们可以从session中取出想要的值
session中可以放一个或者多个值 session中放置的类型可以使任意类型
getId()方法
此方法主要是用来返回一个32位长度的id号,每一次建立一次session会话,会随机生成一个id
<%
//取到session的id号,每次建立连接id号生成的不一样
String id = session.getId();
//判断建立的session是否是一个新的session
//如果是新的则返回true 如果是已经建立的session则返回false
boolean flag = session.isNew();
%>
session的id为:<%=id%>
判断是否是第一次访问:<%=flag%>
|
|
Login: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
<form action="main.jsp" method="post">
用户名:<input type="text" name="uname" />
密码:<input type="password" name="upass" />
<input type="submit" value="提交"/>
</form>
</body>
</html>
|
Main.jsp |
<html>
<title>无标题文档</title>
</head>
<body>
<%
//接收客户端提交过来的用户名和密码
String name = request.getParameter("uname");
String pass = request.getParameter("upass");
//将接收到的用户名和密码放入到session中去
session.setAttribute("u",name);
session.setAttribute("p",pass);
//移除session中的属性值,根据key来移除session中的属性值
session.removeValue("p");
//设置session最大存活时间
session.setMaxInactiveInterval(5);
//对客户端传递过来的用户名和密码进行判断
if(name.equals("admin")&&pass.equals("123")){
//如果用户名和密码为admin和123
//那么跳转到成功页面
response.sendRedirect("success.jsp");
}else{
//登录失败,重新跳转到登录页面
response.sendRedirect("fail.jsp");
}
%>
</body>
</html>
|
Success.jsp |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
login success
<%
//从session中取值
String showname=(String)session.getAttribute("u");
String showpass=(String)session.getAttribute("p");
//取到session存活的时间
int lift=session.getMaxInactiveInterval();
%>
<%=showname%>
<%=showpass%>
<%=lift%>
<a href="other.jsp">点击我跳转</a>
</body>
</html>
|
Fail.jsp: |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
login success
<%
//从session中取值
String showname=(String)session.getAttribute("u");
String showpass=(String)session.getAttribute("p");
%>
<%=showname%>
<%=showpass%>
</body>
</html>
|
Other.jsp(从session中取值) |
<html>
<head>
<title>无标题文档</title>
</head>
<body>
login success
<%
//从session中取值
String showname=(String)session.getAttribute("u");
String showpass=(String)session.getAttribute("p");
%>
<%=showname%>
<%=showpass%>
</body>
</html>
|
|
Get方法和Post方法提交表单的区别:
Ø Get方法提交表单对应的将表单中的数据拼接在地址栏 而post方法提交则不会拼接
Ø Get方法提交安全性相对于post提交安全性低,如果要采用get方法提交,那么必须对表单提交的数据进行加密