jsp重点

2022-05-28 11:17:18   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《jsp重点》,欢迎阅读!
重点,jsp
JSP考点

一、选择题、填空题

1page指令

通过设置内部的多个属性来定义整个页面的属性

语法:<%@ page 属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"%> page指令常用属性: language

在编写JSP页面时要用的脚本语言,默认为java如果写必须写在声明、脚本片段和表达式的面,用法:<%@ page language=java%>;

回应MIME类型(多用途Internet邮件扩充类型)。属性的值默认为text/html 例如:<%@ page contenType=text/html;charset=GB2312%>; 不允许两次指定不同值;ISO-8859-1不接收中文;

用来在JSP页面引入包或类,如:<%@ page import=java.io.*%>

java.lang.*javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* import可重复出现

用来指出关于JSP页面的会话数据的可用性, 默认为true 例如:<%@ page session=false%>; 错误页面的URL

例如 :<%@ page errorPage=/error.jsp%>;

指定是否将当前页面作为JSP错误页面。如果是true,则是,否则不是。 例如 :<%@ page isErroePage=true%>;

contentType

import

session

errorPage

isErrorPage

Extends属性 :定义了由JSP页面产生的servlet的父类。

Buffer属性 :设定JSP网页所使用的缓冲区大小。缓冲区是用来暂存一些要传送給客户端的数据,默认值为8kb。设值为none,即不使用缓冲区的功能。 设定缓冲区的大小值必须大于8kb <%@page buffer = "24kb"%>

autoFlush :是否自动刷新输出缓冲。如果设成true,则当输出缓冲区满的时候,刷新缓冲区而不是抛出一个异常

isThreadSafe属性 用来设置JSP文件是否能多线程使用。

isThreadSafe =true|false,缺省值是true若为true那么多个客户请求发向JSP引擎时,可以一次被处理。JSP程序员要处理同步时共享的状态,以保证同步时确实是安全的。若false,则采用单线程模式控制客户端访问该页。

Info属性:通常用于定义JSP页面的描述信息。內容可使用getServletInfo()方法来取得,如:info属性:<%@page info = “网页信息说明 %> 2ResultSet还提供了对结果集进行滚动的方法: next():移动到下一行 Previous():移动到前一行

absolute(int row):移动到指定行

beforeFirst():移动resultSet的最前面。 afterLast() :移动到resultSet的最后面。


3、通过超链接访问servlet

jsp文件中加入超链接:serelet访问路径”>

例如: <%@ page contentType="text/html;Charset=GB2312" %>

单击超链接查看希腊字母表:


查看希腊字母表

此处,超链接为url-pattern,即路径,需保持一致

myservlet /helpMeShow

4、分页显示-----(看看)

cachedRowSetImpl:可以保存记录集ResultSet中的数据,可以在分页浏览时关闭和数据库的连接。假设有ResultSet对象result,可将其数据保存到上述类的对象中。 CachedRowSetImpl rowSet=new CachedRowSetImpl(); rowSet.populate(result);

假设该对象中有m行记录,每页显示n行,总页数的公式为:

总页数s= (m%n)==0 ? (m/n): (m/n+1) 即余数>0,s=m/n+1;余数=0时,s=m/n. 如果准备显示第p的内容,则需将游标移动到第(p-1)*n+1 MySQL分页的实现:Select * from table limit M,N

M:记录开始索引位置 N:取多少条记录。 完成WEB页面的分页显示 5Statement对象用于向数据库发送SQL语句, 其常用方法: execute(String sql):用于向数据库发送任意sql语句 executeQuery(String sql) :只能向数据发送查询语句。

executeUpdate(String sql):只能向数据库发送insertupdatedelete语句,executeUpdate执行完后,将会返回一个整数 (即增删改语句导致了数据库几行数据发生了变化)

Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

6JSP的运行原理

当服务器的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,并编译生成字节码文件,然后执行字节码文件响应客户的请求。

字节码文件的主要工作是:

(1) JSP页面中的HTML标记(静态代码)交给客户的浏览器负责显示; (2)负责处理JSP标记,并将有关的处理结果发送到客户的浏览器; (3)执行<% %>之间的java程序片(动态代码),并把执行结果交给客户的浏览器负责显示;

(4)当多个用户请求同一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应客户的请求。这些线程Tomcat服务器来管理CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件,这与传统的CGI为每个客户启动一个进程相


比较,效率要高的多。 7 response重定向

在某些情况下,当响应客户时,需要将客户重新引导至另外一个页面。 以使用response response.sendredirect(页面URL)方法实现客户的重定向。

response.sendredirect(页面URL)

例如: <% String str=request.getParameter("boy"); if(str.length()==0)

{ response.sendRedirect("example3_11.jsp"); } else

{ out.print("欢迎您来到本网页!"); out.print(str); } %> 8、发呆最长时间30分钟(单位:分钟)

Tomcat服务器的conf文件下的配置文件web.xml中设置。session失效:关闭浏览器、调用invalidate()方法、“发呆”超时。

30 9SessionURL重写

如果客户的浏览器支持Cookie,可以通过URL重写来实现Session对象的唯一性。所谓URL重写,就是当客户从一个页面连接到同一个Web服务目录的一个页面时,通过向这个新的URL添加参数,把Session对象的ID传带过去,这样就可以保证客户在该网站各个页面中的Session对象是完全相同的。 可使用response对象调用encodeURL()encodeRedirectURL()方法实现URL重写。

10、使用setProperty标记可以设置bean的属性值。 ------(看看) 设置bean的属性为一个表达式的值的格式

name="bean的名字" property= "bean的属性" value= <%=expression%> />(要求表达式类型同属性类型) value= “字符串”/>(字符串自动转化为属性的类型)

Integer.parseInt( String s )Long.parseLong( String s )Float.parseFloat( String s ) Double.parseDouble( String s ) 11、在JSP中调用usebean时,用import导入包。例如: <%@ page import=tom.jiafei.*%> 12session的运行原理

session其实指的就是访问者从到达某个网站到离开为止的那段 时间内(会话期),每个访问者单独获得一个session变量。 该对象 存储会话期中的一些信息,所以访问者在不同的网页间跳转时,不 会丢失其信息

客户访问网站时,服务器会分配给客户一个Session对象,客户 关闭浏览器后,Session对象消失,这称为一次会话。不同的会话通 sessionID区分。

13、变量和方法的声明

<%!"和"%>"声明的变量为类的成员(全局)变量和方法 , 其所占的内存直到Tomcat服务器关闭才释放.


<%"和"%>"为类方法中声明的局部变量和方法 , 仅在JSP页面后继的程序片及表达式中有效.

二、问答题4个)

1、请简述include指令标记和include动作标记的不同

(1) include指令标记:是把被包含的文件的内容放于包含文件中,组成一个文件后编译运行.include动作标记: 是把被包含的文件的运行结果放于包含文件运行产生的结果中,2个文件各自编译运行.

(2) 标签是动态引入, 标签涉及到的2JSP页面会被翻译成2servlet,这2servlet的内容在执行时进行合并。 include指令是静态引入,涉及到的2JSP页面会被翻译成一个servlet其内容是在源文件级别进行合并。

(3) 标签:使用page属性指定被引入资源。include指令:使用file属性指定被引入资源。

2Session对象与application对象的区别

1 应用范围不同。 session对象针对的是单个的访问者,而application对象针对的是所有的访问者,是整站共用的。

2)存活时间不同。Session是在站点的页面从打开到被关闭之前一直生存的,关闭或跳转到其它网站就会使Session死掉。而Application是从站点发布以来一直存活的,除非重启了站点服务,IIS 3Session"会话"的意思,利用Session可以存储浏览者的一些特定信息如:浏览者的姓名、性别、所用浏览器的类型以及访问停留时间等。Session个人信息的安全性构成了一定的威胁。Application对象是一个应用程序级的对象,它包含的数据可以在整个Web站点中被所有用户使用,并且可以在网站运行期间持久地保存数据。

3、连接池的思想

Tomcat服务器可以事先预备好若干个连接对象将这些连接对象存放在一个

称为连接池的容器中,当某用户需要操作数据库时,只要从连接池中取出一个连接对象即可,当用户使用完该连接对象后,将该连接对象放回到连接池中。如果某用户需要数据库时,连接池中已没有连接对象可用,那么该用户就必须等待,直到连接池中有了连接对象。

4、重定向与转发-------(记住、会背)

Servlet使HttpServletResponseSendRedirect,RequestDispatcher类的转发方法forward方法。

重定向功能:是将用户从当前页面或servlet定向到另一个JSP页面或servlet 转发的功能:是将用户对当前JSP页面或servlet对象的请求转发给另一个JSP页面或servlet对象。

5Usebean标签中scope取值---------(大题)


1scope=page”表示该bean仅在当前页面有效。当两个用户同时请求一个JSP页面时,一个用户对自己bean的属性的改变,不影响另一个用户。

2scope=session”表示该beansession生命周期内有效。(单个客户的不同页面内有效) 当两个用户同时请求一个JSP页面时,一个用户对自己bean属性的改变,不影响另一个用户。 3scope=request,该bean的有效范围是request期间。不同用户的bean是互不相同的,即当两个用户同时请求一个JSP页面时,一个用户对自己bean的属性的改变,不影响另一个用户。

4scope=application”表示该beanapplication页面有效。(每个用户的不同页面内有效)当两个用户同时请求一个JSP页面时,任何一个用户对自己bean的属性的改变,都会影响其他的用户。

6Response请求重定向

通过response实现请求重定向。应用场景:用户注册与购物车。

请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。

实现方式:response.sendRedirect()。实现原理:302状态码和location头即可实现重定向

三、程序分析

1.定时刷新 Refresh.jsp:

<% response.setHeader("refresh", "5");

String data=new Random().nextInt(10000)+ ""; response.getWriter().write(data); %>



2.解决中文乱码

Request的中文乱码问题的解决方案

1)提交方法为post,解决方法为:Request.setCharacterEncoding(UTF-8) 2)提交方法为get,解决方法为(手工解决) String str=request.getParameter(message"); byte c[ ]=str.getBytes(ISO-8859-1UTF-8); str=new String(c);

将表单message参数代表内容从ISO-8859-1转化为中文。 3)提交方法为超链接,解决方法同第二种情况。

Response的中文乱码问题的解决方案

1)使用HTML语言里面的标签来控制浏览器行为。

content-type content=text/html;charset=UTF-8>.getBytes()); 2 response.setHeader(content-type,text/html,charset=UTF-8); 3 String data=中国

4 OutputStream输出中文

ServletOutputStream out=response.getOutputStream(); out.write(data.getBytes(UTF-8));


3.分析代码功能或作用

4.SQL语句(2个查询、一个插入、一个修改) 更新(修改) update employee set salary=3000 where name=“张三” 添加(插入) insert into employee values (009,’李国强’,1982-01-023100) insert into employee(number,name) values(010‘吴刚’) 删除: delete from employee where number =009 执行上述三种语句,需要用到容器对象的executeUpdate方法.

假设sql为一容器类对象. sql. executeUpdate(以上三种语句中的一种). 排序:select * from employee order by salary ASC升序/DESC降序 5.使用JDBC操作数据库,步骤如下:----------(记住) 1)与一个数据库建立连接;

2)向已连接的数据库发送SQL语句; 3)处理SQL语句返回的结果;

6.Servlet的生命周期(或工作原理)----------(大题) 一个Servlet的生命周期主要由三个过程组成:

(1) 初始化Servlet对象。 Servlet对象第一次被请求加载时,服务器初始化这个Servlet对象,即创建一个Servlet对象,对象调用init()方法完成必要的初始化工作。(仅执行一次)

(2)诞生的Servlet对象再调用service()方法响应客户的请求。(多个用户请求,所以执行多次)

(3)当服务器关闭时,调用destroy()方法,消灭Servlet对象。

四、编程(原题第六题)

create database Query_Score character set utf8 collate utf8_general_ci; use Query_Score; create table student(

stu_id varchar(15) primary key, stu_name varchar(20), Java_score int, J2EE_score int,

Software_score int

);

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score) values(201000001,'张三','80','90','68');

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score) values(201000002,'李四','65','70','80');

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score) values(201000003,'王敏','90','70','80');

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score)

values(201000004,'李莉','75','85','85');

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score)

values(201000005,'张丽','85','75','90');

Insert into users (stu_id,stu_name,Java_score,J2EE_score,Software_score) values(201000006,'王敏','90','95','85');




MyDbBean.Java

package tom.jiafei;:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

public class MyDbBean {

private Statement stmt = null; private Connection conn = null;

try {

ResultSet rs = null;

Class.forName(“com.mysql.jdbc.Driver”); }

catch(Exception e) { out.print(e); } try {

String url="jdbc:mysql://localhost/Query_Score";

String user="root"; String password="root";

Connection conn=DriverManager.getConnection(url, username,password); Statement st=conn.createStatement();

String sql="select stu_id,stu_name,Java_score,J2EE_score,Software_score from

student";

ResultSet rs=st.executeQuery(sql); while(rs.next()){

System.out.println("stu_id="+rs.getObject("stu_id")); System.out.println("stu_name="+rs.getObject("stu_name")); System.out.println("Java_score="+rs.getObject("Java_score")); System.out.println("J2EE_score="+rs.getObject("J2EE_score"));

System.out.println("Software_score="+rs.getObject("Software_score")); }

rs.close(); st.close(); conn.close(); }

catch(Exception exp){ }

}




本文来源:https://www.wddqxz.cn/253e2307e1bd960590c69ec3d5bbfd0a7956d5ad.html

相关推荐