索引与主键。jsp九大内置对象

索引和主键的区别

主键是表中的一个或多个字段,她的值用于唯一的标识表中的某一条记录

使用索引可快速访问数据表中的特性信息。索引是对数据表中的一列或多列的值进行排序的一种结构,只有当经常查询索引列中的数据时,才需要在表上创建索引。

索引占用磁盘空间,并且降低添加、删除和更新行的速度。当然索引也有好处就是查询速度快,它利还是大于弊的,多以谨慎使用。
比如:一个学生表(t_stu)有1000条数据,给它id列建个主键和索引。你想查询id=1000,的这条信息,如果没有索引,它就一条一条的比对查找,系统运行1000次才找到,要是创建了索引,你查询id=1000的这条消息,系统只运行一次就找到了。
分别创建主键和索引的语法不同:
创建主键和索引:

alter table `user` add primary key (id)
alter table `user` add index index_name(id);

如何添加多列索引

alter table `user` add index index_name(name,pwd,createtime)

jsp的九大内置对象

request

request对象时Jsp中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都封装在request对象中,因此request对象时获取用户请求参数的重要途径。实现了javax.servlet.ServletRequest接口。


 isUserInRole(String role):判断认证后的用户是否属于逻辑的role中的成员。
getAttribute(String name):返回name指定的属性值,如不存在则返回null。
getAttributeNames():返回name指定属性集合,其结果是一个枚举实例。
getCookies():返回客户端的所有Cookie对象,结果为一个Cookie数组。
getCharacterEncoding():返回请求中的字符编码方式。
getContentLength():返回请求的Body的长度,如果不确定长度,则返回-1。
getHeader(String name):获得HTTP协议定义的文件头信息。
getHeaders(String name):返回所有指定名字的request Header的所有值,其结果是一个枚举实例。
getHeaderNames():返回所有request Header的名字,结果为一个枚举实例。
getInputStream():返回请求的输入流,用于获得请求中的数据。
getMethod():获得客户端向服务器端传送数据的方法,如 GET、POST、HEADER、TRACE等。
getParameter(String name):获得客户端传送给服务器端的参数值,可以获得GET和POST提交的参数。
getParameterNames():获得客户端传送给服务器端的所有参数名字,其结果为一个枚举实例。
getParameterValues(String name):获得指定参数的所有值。
getProtocol():获得客户端向服务器端传送数据所依据的协议名称。
getQueryString():获得查询字符串,该字符串以GET方式提交。
getRequestURI():获得发出请求字符串的客户端地址。
getRemoteAddr():获取客户端的IP地址。
getRemoteHost():获取客户端的名字。
getSession([Boolean create]):返回和请求相关的session,create为可选参数,当有参数create且为true时,如果此时客户端没有创建session,则创建一个新的session。
getServerName():获得服务器的名字。
getServletPath():获得客户端所请求的脚本文件的文件路径。
getServerPort():获取服务器的端口号。
removeAttribute(String name):删除请求中的一个属性。
setAttribute(String name, Java.lang.Object objt):设置名字为name的request参数的值,该值是由java.lang.Object类型的objt指定的。
 ```
###response
 response对象与request对象对应,它用于响应客户端请并向客户端输出信息。并且,在JSP页面中,response就是`HttpServletResponse类`的一个对象,可以直接使用response在JSP页面中调用HttpServletResponse类的所有方法。response最常用sentRedirect(String locationURL)方法执行页面跳转。

setContentLength(int len):该方法用于设置响应头的长度。
setContentType(String type):用于设置HTTP响应的contentType中的MIME类型,其中可以包含字符编码的规则。例如可以把contentType设置为“text/html;charset=GB2312”。在Servlet编写过程中,需要调用此方法进行设置,但是在JSP中一般都是使用page指令直接指定contentType的属性。
getOutputStream():返回一个Servlet的输出流,用于在响应中写入二进制数据。
getWriter():返回一个PrintWriter对象,在Servlet编程中使用较频繁。而在JSP文件中,由于out对象就是用getWriter()创建的PrintWriter对象的隐含对象,所以一般直接调用out对象作输出响应。
getCharacterEncoding():获得此时响应所采用的字符编码类型。
sendError(int status):使用指定错误状态码向客户机发送相应的错误信息。
sendError(int status, String message):使用自定义的错误状态码以及描述信息向客户机发送错误的提示信息。
sendRedirect(String locationURL):将请求重新定位到一个不同的URL(页面)上。此方法在实际开发过程中经常使用到。
setDateHeader(String headername, long date):把指定的头名称以及日期设置为响应头信息。其中日期是用long值表示的,其值为从新纪元开始算起的毫秒数。
containsHeader(String name):检测指定的头信息是否存在,返回一个布尔值。
setHeader(String headername, String value):使用指定的头名字以及相应的值来设置头信息。如有重复,则覆盖。
addHeader(String headername, String value):将指定的头名字以及相应值添加到头信息中。
addIntHeader(String headername, int value):把指定的头名字整数值添加到头信息中。如有重复,则覆盖。
setStatus(int sc):给响应设置状态代码。
setStatus(int sc, String sm):给响应设置状态代码以及信息。这是在没有错误的情况下使用的。

三、response对象常用方法实例

1.response对象的getWriter()方法实例:下面这段Servlet代码的功能是使用getWriter()获取一个PrintWriter对象,从而调用其中的println()方法来向客户端输出内容。

            package com.helloworld;
            import java.io.PrintWriter;        //引入PrintWriter类
            import javax.servlet.http.HttpServletResponse;
            
            public class PrintHTML
            {
                public static void printHTML(HttpServletResponse response)
                throws Exception
                {
                    //调用HttpServletResponse类中的getWriter()方法
                    PrintWriter out =response.getWriter();
                    out.println(“

###页面重定向与转发的区别
重定向:首先服务器收到浏览器客户端请求之后,服务器发送新的连接到客户端浏览器,浏览器接收到新的连接之后又重新请求收到的链接地址,在整个过程中完成之后在客户端浏览器看来是发生了一次跳转,其实是


 总结归纳要点:
 1.内部跳转的时候实际上是通过服务器将请求转发到另外的页面或servlet,这个时候跳转到的目标页面或者servlet可以**获取到请求对象,也可以获取到请求中的属性和参数**。而外部跳转的时候实际上是第一次请求后,**服务器向客户端发送了一个指令,让客户端再次请求了一次服务器端,这个时候服务器第二次拿到的request对**象已经不是第一次请求的request对象了,所以无法获取第一次请求里的参数和属性。
 2.内部跳转的URL地址栏不会发生变化,外部跳转就会发生变化。
 3.内部跳转无法调到工程以外的jsp或者servlet,外部跳转则可以。
 4.内部跳转实现的方法:
 request.getRequestDispatcher("XXX.jsp或servlet").forword(request,response);
 而外部跳转实现的方法:
 response.sendRedirect("XXX.jsp或servlet");
5.重定向传值出去,只能在url中带parameter或者放在session中,无法使用request.setAttribute()来传递。
原理:
`重定向`方式在客户端做的重定向处理,该方法通过**修改HTTP协议的HEADER部分**,对浏览器下达重定向指令,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。该方法**可以接受绝对的或相对的URL**。如果传递到该方法的参数是一个相对的URL,那么web container在将发送到客户端签会把它**转换成一个绝对的URL**.
` 请求转发`,页面的路径是**相对路径**,**只能跳转到本WEB 应用的页面中**。传值可以使用三种方法:**url中到parameter,session,request.setAttribute**这种方式是在服务器做的重定向。
服务器往client发送数据的过程是这样的:
服务器在向客户端发送数据之前,事先将数据输出到缓冲区,然后将缓冲区的数据发送给client端,什么时候将缓冲区里的数据发送到client端呢?
(1) 当对来自client的request处理完,并把所有的数据输出到缓冲区
(2)当缓冲区满
(3)在程序中调用缓冲区的输出方法out.flush()或response.flushbuffer(),web container才将缓冲区中的出局发送给client.
###Cookie
常用方法:
response.addCookie(Cookie e);//添加Cookie
Cookie cookie = new Cookie("name","value");//创建一个新的cookie
cookie.setMaxAge(int seconds)设置cookie的最长寿命
cookie.getName();获得名字
cookie.getValue();获得值
Cookie cs[]=request.getCookies();获得Cookie.
###session

session常用方法:
(1)String getId();获得sessionID,sessionID 类似于Cookie的JSessionid,是服务器自动分配的。
(2)session.setAttribute(“”,”“);设置属性
(3)session.getCreateTime();获得创建时间
(4)session.getLastAccessedTime();获取最后访问时间
(5)session.isNew()这个session是否是新的,及判断session id
(6)session.invalidate()把session的属性全部清空

登录-注销界面:

(1)使用session.setAttribute()注册
(2)使用session.getAttribute判断是否已经注册
(3)使用session.invalidate();注销

###application对象
**java.servlet.ServletContext**
常用方法:

(1)getRealPath(path):获得真是路径
(2)getContextPath();获得虚拟路径。
(3)getInitParameter(String)

###config对象
 java.servlet.ServletConfig
 先从配置文件谈起,在每个web应用中,都有一个WEB-INF文件夹,这个文件夹是很安全的。不会被其他人看到,因为不能直接访问,除非通过映射关系访问
 如果将一个hello.jsp文件方法WEB-INF中,如果能都让其别访问,要在WEB-INF/web.xml设置就行。
 ```
 <servlet>
    <servlet-name>he</servlet-name>
    <jsp-file>/WEB-INF/hello.jsp</jsp-file>
 </servlet>
<servlet-mapping>
  <servlet-name>he</servlet-name>
    <url-pattern>hello</url-pattern>
</sevlet-mapping>

config常用方法:

(1)getInitParameterNames();
(2)getInitParameter(String name);

什么是初始化参数呢?
初始化参数在web.xml中进行配置,形式如下:

<servlet>
<init-param>
    <param-name>name</param-name>
    <param-value>value</param-value>
</init-param>
</servlet>

pageContext对象

表示JSP上下文,可以通过这个实例,取得request\response\session\等。
(1)pageContext.forward(String);
(2)pageContext.include(String);
(3)pageContext.getServletConfig();
(4)pageContext.getServletContext();
(5)pageContext.getRequest();
(6)pageContext.geResponse();
(7)pageContext.getSession();
也就是说,只要有了pageContext对象,就能完成一切内置对象的功能;

exception对象

只有当isErrorPage=”true”才能使用。
常用方法:
(1)getMessage();

out对象

javax.servlet.jsp.JspWriter
一般用于输出字符流,即文本流但是如果需要传递图片等信息,则需要通过response传递

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值