jsp之javaweb在学习
来源:互联网 发布:java项目获取src路径 编辑:程序博客网 时间:2024/05/07 14:04
Jsp内置对象
- request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:
- String getParameter(String name) 返回name指定参数的参数值
- String[] getParameterValues(String name) 返回包含参数name的所有值的数组
- void setAttribute(String, Object) 存储此请求中的属性
- Object getAttribute(String name) 返回指定属性的属性值
- String getContentType() 得到请求体的MIME类型
- String getProtocol() 返回请求用的协议类型及版本号
- String getServerName() 返回接收请求的服务器主机名
--
用户注册表单
<body><h1>用户注册</h1><hr><form name="regForm" action="request.jsp" method="post""><table> <tr> <td>用户名</td> <td><input type="text" name="username"> </td> </tr> <tr> <td> <input type="checkbox" name="favorite" value="read"> 读书 <input type="checkbox" name="favorite" value="music"> 音乐 <input type="checkbox" name="favorite" value="movie"> 电影 <input type="checkbox" name="favorite" value="internet"> 上网 </td> </tr> <tr> <td colspan="2"> <input type="submit" value="提交"> </td> </tr></table></form></body>
request.jsp
<body> <h1>request内置对象</h1> <% request.setCharacterEncoding("utf-8"); //解决中文乱码 %> 用户名:<%= request.getParameter("username") %><br> 爱好:<% String[] favor = request.getParameterValues("favorite"); for(int i=0; i<favor.length; i++){ out.println(favor[i]+" "); } %><br> 请求体的MIME类型:<%= request.getContentType() %><br> 协议类型及版本号:<%= request.getProtocol() %><br> 服务器主机名:<%= request.getServerName() %><br> 服务器端口号:<%= request.getServerPort() %><br> 请求客户端的IP地址:<%= request.getRemoteAddr() %><br> 请求的真实路径:<%= request.getRealPath("request.jsp") %><br></body>
- response对象
response对象包含了响应客户请求的有关信息,但在Jsp中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效
常用方法如下:
1. String getCharacterEncoding() 返回响应用的是何种字符编码
2. void setContentType(String type) 设置响应的MIME类型
3. PrintWriter getWriter() 返回可以向客户端输出字符的一个对象
4. sendRedirect(java.lang.String.location) 重新定向客户端的请求
- 请求转发与请求重定向
请求重定性
客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,第一次请求对象不会保存,地址栏的URL地址会改变。
转发请求
服务器行为,request.getRequestDispatcher().forward(req,resp)是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
例如:
login.jsp
response.jsp
<% response.setContentType("text/html;charset=utf-8"); out.println("<h1>response内置对象<h1>"); //请求重定向 //response.sendRedirect("request.jsp"); //请求转发 //request.getRequestDispatcher("request.jsp").forward(request, response);%>
request.jsp
- session
session表示客户端与服务器的一次会话
Web中的session指的是用户在游览某个网站时,从进入网站到游览器关闭所经过的这段时间,也就是用户游览这个网站所花费的时间从上述定义中可以看到,session实际上是一个特定的时间概念
- session对象
session对象是一个Jsp内置对象。
session对象在第一个Jsp页面被装载时自动创建,完成会话期管理。
从一个客户打开游览器并连接服务器开始,到客户关闭游览器离开这个服务结束,被称为一个会话。
当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
session对象是HttpSession类的实例。session对象常用方法
- long getCreationTime() 返回Session创建时间
- String getId() 返回session创建时Jsp引擎为它设置的唯一ID号
- void setAttribute(String name, Object value) 使用指定名称将对象绑定到此会话
- Object getAttribute(String name) 返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null。
- String[] getValueNames() 返回一个包含此session中所有可用属性的数组
- void setMaxInactiveInterval(int max) 设置session最大生存期限(单位秒)
- int getMaxInactiveInterval() 返回两次请求间隔多长时间此session被取消(单位秒)
--
例如
session_page01.jsp
<h1> session 内置对象</h1><% SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); session.setAttribute("username", "Jack"); session.setAttribute("password", "11111"); //设置当前session最大生存期限单位是秒 session.setMaxInactiveInterval(5);%>session创建时间<%=sdf.format(session.getCreationTime()) %> <br>session的ID编号<%=session.getId() %> <br>从session中获取用户名:<%=session.getAttribute("username") %> <br><a href="session_page02.jsp">跳转到session_page02</a> <br>
session_page02.jsp
<h1>session内置对象</h1>session的ID编号<%= session.getId() %> <br>从session中获取用户名:<%=session.getAttribute("username") %> <br>session中保存的属性有:<% String names[] = session.getValueNames(); for(int i=0; i<names.length; i++){ out.println(names[i] + " "); } %><br>
- session生命周期
创建
当客户端第一次访问某个Jsp或者Servlet时候,服务器会为当前会话创建一个sessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验。
活动
- 某次会话当中通过超链接打开的新页面属于同一次会话
- 只要当前会话页面没有全部关闭,重新打开新的游览器窗口访问同一项目资源时属于同一次会话。
- 除非本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。
- 注意原有会话还存在,只是这个旧的sessionId仍然存在于服务器,只不过再也没有客户端会携带它然后交于服务器校验。
销毁
- 调用session.invalidate()方法
- session过期(Tomcat默认超时时间为30分钟)
- 服务器重新启动
- 实现用户登录(不带数据库的)
用户名admin,密码admin,登录成功使用服务器内部转发到login_success.jsp页面,并且提示登录成功的用户名。如果登录失败,则请求重定向到login_failure.jsp页面。
login.jsp
<body><h1>用户登录</h1><hr><form action="dologin.jsp" name="loginForm" method="post"><table><tr> <td>用户名:</td> <td><input type="text" name="userName"></td></tr><tr> <td>密码:</td> <td><input type="password"" name="password"></td></tr><tr> <td colspan="2"><input type="submit" value="登录"> </td></tr></table></form></body>
dologin.jsp
<% String userName = request.getParameter("userName");String password = request.getParameter("password");if("admin".equals(userName) && "admin".equals(password)){ session.setAttribute("user", "admin"); //服务器内部转发 request.getRequestDispatcher("login_success.jsp").forward(request, response);}else{ //请求重定向 response.sendRedirect("login_fail.jsp");}%>
login_success.jsp
<body><% String user = ""; if(session.getAttribute("user") != null){ user = session.getAttribute("user").toString(); }%><h1>欢迎<font color="red"><%= user %> </font>登陆成功</h1></body>
login_fail.jsp
<body><h1>登陆失败,请检查</h1><a href="login.jsp">返回</a></body>
- jsp之javaweb在学习
- JavaWeb学习之JSP
- Javaweb学习之JSP基础
- JavaWeb初级学习 之 JSP
- JavaWeb之jsp学习篇
- JavaWeb学习之JSP指令
- JavaWeb学习篇之----Jsp详解
- JAVAWeb之JSP学习笔记一
- JAVAWeb之JSP学习笔记二
- JavaWeb学习篇之----Jsp详解
- JavaWeb学习之JSP基本语法
- JavaWeb 之 JSP基础
- javaWeb开发之jsp
- JavaWeb之JSP
- JavaWeb之JSP笔记
- JavaWeb之JSP
- javaweb之jsp
- javaweb之jsp
- Mysql之校对集问题
- jzoj 1348. 【2011.12.17普及模拟】越野跑
- tjut 2865
- Mybatis执行Update返回行数为负数
- vim之vim基础知识
- jsp之javaweb在学习
- HDU-5671 Matrix
- 动态建树之——查字典
- 论黄金分割的设计使用
- 谈谈缓存更新的套路
- Delegate的BeginInvoke()
- C++ hdoj 2032 杨辉三角
- poj-1159-Palindrome【LCS】【滚动数组】
- 【JZOJ 4685】 礼物