Jsp编程题
五、问答题
1、JSP 初学者应该注意哪些问题?
答:(1)Java是区分大小写的。
(2)Java 调用过程都是要加括号的。
(3)JSP 中截取变量的方法单一。
(4)Javascript 的函数在JSP 中不能应用。
2、JSP中有哪些内置对象?作用分别是什么?
答:
application对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息。
Out对象代表提供输出流的访问
Request对象提供对Http请求数据的访问,同时还提供用于加入特定请求数据的上下文
Response对象,实现输出、跳转等功能;
Session对象,表示一个特定的会话。
3、请说出<%@ page include%>、<%@ include%>、
<%@ page include%>和<%@ include%>只能包含静态文件,而
4、简述JSP运行环境的配置。
答:JSP 开发环境的搭建必须经过以下几个步骤:
(1)下载并安装JDK
(2) 配置环境变量。
(3)下载并安装TomCat。
(4)在Tomcat 服务器中建立WEB 应用程序,步骤如下:
①进入Tomcat的安装目录的webapps 目录,可以看到ROOT,examples, 等Tomcat 自带的
目录;
②在webapps 目录下新建一个目录,起名叫myapp;
③在myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
④WEB-INF下新建一个文件web.xml;web.xml中的内容可以从Root 目录下的相应文件拷
贝得到。
⑤编写一个JSP 文件first.jsp。
⑥将文件复制到myapp 文件夹中;
⑦启动TomCat。
⑧在浏览器中输入http://127.0.0.1:8080/myapp/first.jsp,即可以运行该程序。
5、使用JavaBean时需要注意哪几点?
答:
(1)懂得将Bean 放在哪个目录下:将JavaBean 放在web-inf\classes\包名目录中。
(2)懂得如何定义一个Bean;其中的语法规范不一定要记住,但要理解其中的结构。
(3)Java 文件和Bean所定义的类名一定要相同,并且是大小写敏感。
(4)Bean中要声明公共方法,与Bean的名字相同。
(5)懂得如何在JSP 文件中引用JavaBean,其实就是
(6)一定要紧记Java 是区分大小写的。
6、JSP连接SQL Server数据库Book.mdf的步骤是什么?
答:
(1)创建ODBC数据源
在管理工具的odbc数据源中选择系统dsn,创建数据源studsn。
(2)编写连接数据库的代码:
Connection conn=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String URL = "jdbc:odbc: studsn";
conn = DriverManager.getConnection(URL,"","");
out.print("已成功连接数据库“student”,可以对其进行操作了。");
8、为什么JSP 文件的第一次打开速度比较慢,而以后的速度会快很多?
答:文件就是在HTML 文件中嵌入了一些Java语言。但在执行时JSP 文件会转换为Servlet 文件,JSP 页面在第一次打开时速度比较慢,因为转换成Servlet文件,这个过程需要一定时间。但如果JSP 页面不是第一次被调用,那么就意味着JSP 文件已经被转换为Servlet 文件,那么再次请求该JSP 页面时,就可以直接调用该Servlet文件执行,因此,打开页面的速度会变快。
六、编程题
1、编写一段汉字转换代码解决JSP 中的汉字乱码问题。<%
string s1="这是要测试的中文。";
byte[ ] b1=s1.getBytes();
out.println(new String(b1,"8859_1"));
%>
2、编写圆类的javabean并调用该bean.
3、为登录过程编写一个JavaBean,要求如下:
(1)定义一个包,将该bean编译后生成的类存入该包中。(2)设计两个属性name 和pass
(3) 设计访问属性的相应方法。
package mybean;
public class TestBean
{
private String name = null;
private String pass = null;
public TestBean()
{
}
public void setName(String value)
{
name = value;
}
public void setPass(String value)
{
pass = value;
}
public String getString1Value()
{
return name;
}
public String getString2Value()
{
return pass;
}
}
4、用response 编写一个刷新页面,实现每两秒种刷新一次。<%
response.setHeader("refresh","2"); //设置每2 秒刷新一次刷新out.println(new Date().toLocaleString()); //获得当前时间
%>
统计访问量
<%-- 例3-1 变量和方法的声明,可放在head里,body里或head与body之间-- % > <%!
int num=0;
synchronized void add(){
num++;
}
%>
<% add(); %> <%-- 方法的调用--%>
您是第<%=num %>位访问者。
验证用户登录信息:
Index.jsp
package bean;
public class userbean {
private String username;
private String truename;
private String password;
private String password2;
private String email;
private String retmsg;
public String getUsername() {
return username;
}
public void setUsername(String username) {
https://www.wendangku.net/doc/c610526213.html,ername = username;
}
// 以下是所有属性的getXXX()和setXXX()方法
public String check(){
if(username.equals("")){
retmsg=retmsg+"用户名不能为空!";
}
if(truename.equals("")){
retmsg=retmsg+"真实姓名不能为空!";
}
if(password.length()<4){
retmsg=retmsg+"密码至少为4位数!";
}
if(!password2.equals(password)){
retmsg=retmsg+"两次密码必须一致!";
}
return retmsg; //注册信息合法则retmsg为空,否则不为空}
}
声明类
正方形
<%@ page contentType="text/html;charset= utf-8 "%>
请您输入所求正方形的边长:
<%—例3-2 声明类--%>
<%--声明square类--%>
<%! public class square {
double k;
square(double k)
{ this.k=k; }
double getarea()
{ return k*k; }
double getlength()
{ return k*4; }
}
%>
<% String m=request.getParameter("koala");
double k;
//取出k值来
if(m!=null){ k=Double.valueOf(m).doubleValue();
// Double.valueOf(str)把String转化成Double类型的对象
// doubleValue() 是求double类型的原始值
}
else{ k=1; }
square qq=new square(k); //创建对象
%>
正方形的面积是:<%=qq.getarea()%>
正方形的周长是:<%=qq.getlength()%>
数据页面paramsForm.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
读取表单参数的Servlet文件(ThreeParams.java)
public class threeParams extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(""); out.println("
");out.println(request.getParameter("gr1") +"
");
out.println(request.getParameter("gr2") +"
");
out.println(request.getParameter("gr3") +"
");
out.println(""); out.println("");
out.close();
} protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
连接数据库Mysql:
String Driver="com.mysql.jdbc.Driver"; //驱动程序
String URL="jdbc:mysql://localhost:3306/db_name"; //URL,db_name为连接的数据库名
String Username="username"; //用户名
String Password="password"; //密码
Class.forName(Driver).newInstance(); //加载数据库驱动
Connection con=DriverManager.getConnection(URL,Username,Password); //建立连接对象
查找:
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String query="select * from student";
ResultSet rs=stmt.executeQuery(query); //稍后专门讨论rs
查找到后,进行更改、新增
更改:
Statement stmt=con.createStatement();
String sql="update student set gender=‘男’where name=‘Amy’";
stmt.executeUpdate(sql);
Statement stmt=con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet. CONCUR_UPDATABLE);
String sql="select gender from student where name=‘Amy’";
ResultSet uprs=stmt.executeQuery(sql);
Uprs.updateString(“gender”,男);
uprs.updateRow();
新增:
Statement stmt=con.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet. CONCUR_UPDA TABLE);
String sql="select * from student";
ResultSet uprs=stmt.executeQuery(sql);
Uprs.moveToInsertRow();
Uprs.updateString(1, “Amy")
Uprs.updateString(2, "男")
Uprs.updateInt(3,100);
uprs.insertRow();
String sql="insert into student(name,gender,chinese,maths)
values('"+name+"','"+gender+"',"+chinese+","+maths+")";
String sql="select * from info where studentAge>=? and studentAge<=?"; PreparedStatement stmt=conn.prepareStatement(sql);
stmt.setInt(1,18);
stmt.setInt(2,20);
ResultSet rs=stmt.executeQuery();
数据分页显示:设置4个变量:
int pagesize; (每页多少条记录,指定的)
int pagenow; (当前是第几页,用户选择的)
int pagetotal; (一共有多少页,计算出来的)
int rowtotal; (一共有多少条记录,从数据库里查询得到的)
计算总页数:
If(rowtotal%pagesize==0){
pagetotal=rowtotal/pagesize;
}else{
pagetotal=rowtotal/pagesize+1;
}
显示第pagenow页的内容(MySQL语句):
select * from user limit " + pagesize*(pagenow-1) +"," + pagesize