JSP数据交互中注意的事项及使用时可能存在的问题

什么是JSP内置对象
JSP内置对象是 Web 容器创建的一组对象
<%
        int[ ] value = { 60, 70, 80 };
        for  (int i : value) {
                out.println(i);
        //在服务器上可以解析成换行 但是页面上解析成一个空格 不会进行换行
        } 
%>

常用的JSP内置对象
out
request
response
application
session

request对象常用方法
String getParameter(String name)                根据表单组件名称获取提交数据
String[ ] getParameterValues(String name)            获取表单组件对应多个值时的请求数据 
void setCharacterEncoding(String charset)            指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path)        返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求


获取数据时解决中文乱码问题
<%   // 以POST方式提交数据时
        // 设置读取请求信息的字符编码为UTF-8
        request.setCharacterEncoding("UTF-8");    
        // 读取用户名和密码
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
%>


<%   // 以GET方式提交数据时
        // 读取用户名和密码
        String name = request.getParameter("name");
        // 对请求数据进行字符编码
        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
%>

在Tomcat目录结构\conf\server.xml中设置字符集
<Connector  port="8080"  protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"  URIEncoding="UTF-8"
/>

JSP内置对象response 
response对象用于响应客户请求并向客户端输出信息 


页面重定向
    void sendRedirect(String location)
    客户端将重新发送请求到指定的URL


请求的转发
转发的作用
    在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
转发的实现
    RequestDispatcher对象的forward()方法

在多个页面交互过程中 请求中的数据可以共享
<%
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
%>

转发
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
客户端浏览器的地址栏不会显示转向后的地址


重定向
重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
在地址栏中可以显示转向后的地址

什么是会话
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
同一个session对象sessionid相同


session对象常用方法:
String getId()                        获取sessionid
void setMaxInactiveInterval(int interval)        设定session的非活动时间
int getMaxInactiveInterval()                获取session的有效非活动时间(以秒为单位)
void invalidate()                    设置session对象失效
void setAttribute(String key, Object value)        以key/value的形式保存对象值
Object getAttribute(String key)                通过key获取对象值 
void removeAttribute(String key)            从session中删除指定名称(key)所对应的对象


session与窗口的关系
每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

session对象的失效
手动设置失效:invalidate()
超时失效
通过setMaxInactiveInterval( )方法,单位是秒
<%
session.setAttribute("login","admin"); 
session.setMaxInactiveInterval(600); 
response.sendRedirect("admin.jsp"); 
%>


通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

include指令
创建登录验证文件 loginControl.jsp
<%
String login = (String) session.getAttribute("login");
if (login == null) {
  response.sendRedirect("index.jsp");
    return;
} %>

在后台首页面中使用include指令引用登录验证文件
<%@  include file="loginControl.jsp" %>

JSP内置对象application 
统计网站访问次数

application实现用户之间的数据共享

application对象的常用方法
void setAttribute(String key,Object value)    以key/value的形式保存对象值
Object getAttribute(String key)            通过key获取对象值 
String getRealPath(String path)            返回相对路径的真实路径

JSP常用内置对象
out            用于向客户端输出数据
request            主要用于处理客户端请求的数据信息
response        用于响应客户端请求并向客户端输出信息
session            用于记录会话状态的相关信息
application        类似于系统的全局变量,用于实现Web应用中的资源共享


作用域的分类
page作用域 对应的作用域访问对象为 pageContext 对象
request作用域 对应的作用域访问对象为 request 对象
session作用域 对应的作用域访问对象为 session 对象
application作用域 对应的作用域访问对象为 application 对象

page作用域指本JSP页面的范围
pageContext.setAttribute(键,值)
pageContext.getAttribute(键)


request作用域内的对象则是与客户端的请求绑定在一起


session作用域:一次会话

对象的作用域
page作用域            在一个页面范围内有效,通过pageContext对象访问
request作用域             在一个服务器请求范围内有效
session作用域            在一次会话范围内容有效
application作用域        在一个应用服务器范围内有效

cookie的简介
cookie是Web服务器保存在客户端的一系列文本信息
cookie的作用
    对特定对象的追踪
    实现各种个性化服务
    简化登录
安全性能
    容易泄露信息

在JSP中使用cookie
cookie是由服务器写到客户端的,存储在客户端的文件中
创建cookie对象
Cookie newCookie = new Cookie(String key, String value);
写入cookie
response.addCookie(newCookie);
读取cookie
Cookie[] cookies = request.getCookies();

cookie对象的常用方法
void setMaxAge(int expiry)    设置cookie的有效期,以秒为单位
void setValue(String value)    在cookie创建后,对cookie进行赋值 
String getName()        获取cookie的名称
String getValue()        获取cookie的值
int getMaxAge()            获取cookie的有效时间,以秒为单位


cookie与session的对比
session
在服务器端保存用户信息
session中保存的是Object类型
随会话的结束而将其存储的数据销毁
保存重要的信息

cookie
在客户端保存用户信息
cookie的是 String类保存型
cookie可以长期保存在客户端
保存不重要的用户信息

使用JDBC访问数据库的步骤
JDB加载C驱动                Class.forName()
与数据库建立连接            DriverManager.getConnection()
发送SQL语句,并得到返回结果        Statement 、 ResultSet 
处理返结果回                处理返回结果
释放资源                .close()


分层实现
数据访问层(DAO)
表示层(JSP)
    非空验证
    提示错误信息并保留用户所填写的信息

JavaBean的优势
    解决代码重复编写,减少代码冗余
    功能区分明确
    提高了代码的维护性


从JavaBean的功能上可以分为
    封装数据
    封装业务
公有类
属性私有
getter和setter方法
无参的公有构造方法


封装数据的JavaBean
public class Comment {       
       private String cid;           // 用户名
       private String cnid;          // 邮编
       private String ccontent;    // 电话
       …
       public Comment () {    }
       public void setCid(String cid) {
                 this. cid= cid;
       }
       public String getCid() {
                return cid;
       }
   }

在JSP页面中导入JavaBean
//引入JavaBean
<%@ page import="org.news.bean.*" %>
//使用JavaBean
<%
    Comment c = new Comment();
    c.setCid(1014);
    c.getCauthor();
%>

猜你喜欢

转载自blog.csdn.net/a814163435/article/details/82992195