版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JSP快速入门教程第一讲(参考Java Web程序设计基础教程第1章)1 JSP 和 Java的关系 一般Java指的标注版 Java SE 另外两个版本:Java EE 和 Java ME JSP属于Java EE的一部分。 Java EE: 组件:Web层组件(JSPServlet)业务层组件(EJB) 服务:JNDI JDBC RMI JAAS JavaMail等等 Java EE包括2个体系:标准(上面介绍的)流行(StrutsHibernateSpring) 两套体系都是JSPServlet为基础。2 JSP会涉及哪些内容 JSP语法基础(JavaHTML): 对于Java,需要掌握
2、Java的基本语法(类定义 对象定义和使用 常用类库java.lang.*,java.util.*) 对于HTML,主要表单元素(输入)表格(显示信息)基本HTML JSTL,标准标签库,用于输出和控制 EL,通常与JSTL一起使用,主要用于输出 Servlet,几乎所有介绍JSP的书和课程都包含Servlet,因为JSP实际上指的是Java Web开发。用Servlet主要是控制器。 JDBC,对数据库的访问。 JavaBean(Java类)3 JSP的运行环境 JDK 服务器:我们用Tomcat。其它的服务器:IBM Websphere + BEA WebLogic+ JBoss(免费的)
3、 + GlassFish(新出的Java EE 5服务器)4 JSP的开发环境 页面:DreamWeaver开发页面 代码:本文编辑器 Eclipse NetBeans JBuilder 注:我们采用记事本。5 Tomcat文件夹 webapps主要各个应用,编写的每个应用(网站)都可以放在这个位置 bin这个是启动服务器的相关文件,tomcat6用于命令行方式的启动,tomcat6w用于windows方式的启动 conf用于配置,常用的是server.xml 另外一个是web.xml work 存放临时文件 logs系统运行时候的日志信息6 实例:hello.jsp 创建一个应用,实际上需要
4、在webapps中创建文件夹,bookstore,相当于应用的名字 文件夹中要创建一个子文件夹WEB-INF,这个每个应用web应用都需要的。 在WEB-INF中需要web.xml,是web应用的配置文件,还应该有classes和lib子文件夹(存放类文件) JSP文件和HTML文件直接放在bookstore下面。 hello.jsp文件内容如下: 第一个JSP程序 Hello,晚上好! 先启动服务器: 访问程序: HYPERLINK :8080/bookstore/hello.jsp t _blank :8080/bookstore/hello.jsp http表示协议 表示主机IP地址,也
5、可以写主机名字 8080表示服务的端口,上网的时候不用输入端口,因为采用了默认的端口,默认端口80。 bookstore表示应用,是应用的名字 hello.jsp就是资源7 JSP的运行原理 过程: 首先启动服务器,并且要保证应用在服务器上(把应用放在webapps下面,会自动加载) 在客户端通过浏览器发送请求(在地址栏中输入地址) 服务器接收到请求之后,查找有没有这个文件对应的Java文件的对象。如果没有这个对象,需要创建(先把JSP文件转换成Java文件, 编译成.class文件,加载类并创建对象),然后调用对象的相应方法,方法完成对用户的响应,通常是输出的html代码) 客户端接收到的是
6、html代码,浏览器解析这个代码生成页面。8 表格的语法 开始标志: 结束标志: 中间是行,每行是一个 每行之间是列,每一列对应 之间的内容就是每个表格中的信息*第一讲结束 HYPERLINK /space.php?uid=10410 阳光2008-11-15 19:54:57 第二讲(参考Java Web程序设计基础教程第2章)1、form 只要是涉及向服务器提交信息,都应该使用form。 基本语法结构: 各种表单元素 action属性决定的目标文件来对用户提交的信息进行处理。2、常用的表单元素 单行文本框:用于输入少量的信息。 基本语法格式: type=text就说明这是单行文本框; na
7、me指出文本框的名字,最好不要用汉字,最好使用有意义的名字; value指出默认值,如果没有默认值,可以不要value属性,value属性经常在修改的时候使用。 注意:如果有格式要求,要明确的告诉用户。 密码框:用于输入密码。 基本的语法格式: 注意:设置密码的时候,应该使用确认密码,应该有两个密码框。 提交按钮:当点击它的时候,会把输入的信息提交给服务器。 基本语法格式: type应该为submit,value是显示在按钮上面的信息。 复位按钮:当点击它的时候,会把各个表单元素的值恢复到默认值。 基本语法格式: 普通按钮:也可以完成提交,还可以完成方法的调用。 基本语法格式: 单选按钮:通用
8、用于在多个选项中选择一个。 基本语法格式: 这个表示一个单选按钮,并且仅仅是一个按钮。 例,选择性别: 男 女 如果希望在多个选项中选择一个(有互斥性),必须让他们的名字一致。 复选框:用于多选。 基本的语法格式: 显示给用户的信息与提交给服务器的信息没有关系。 如果希望多个选项是一组,应该使用相同的名字。 下拉列表:用于选择,可以单选,也可以多选。 基本语法格式: 1 2 . 每个选项使用一个option,使用value属性指出该选项的值,在和之间是显示给用户的值。 文本域:用于输入大量的信息。 基本语法格式: 默认值 要为这个文本域赋默认值,需要把值放在开始标志和结束标志之间,而不是使用v
9、alue属性。3、完成输入的时候应该注意的问题 对格式的要求必须明确,包括长度、数字、日期、email、电话、必添。 能够从系统中获取的信息不要让用户提供,例如当前时间。 能够选择的信息不要让用户输入。 按照信息的重要程度安排表单元素在界面中的位置。4、对用户输入信息进行验证 要用JavaScript,使用下面的标记: /JavaScript代码 要写方法 function check() 方法可以不用定义返回值,但是可以有返回值 获取用户输入的值: document.form1.username.value document表示当前文档,form1表示表单的名字,username表示该表单中
10、表单元素的名字,value表示得到值 把表单提交与方法关联:可以使用表单的onSubmit事件。 例: function check() username = document.form1.username.value; if(username.length8) alert(用户名长度不合适!); return false; else return true; 使用button的onClick事件进行验证: 首先要把提交按钮修改成普通按钮; 在普通按钮上增加事件:onClick=javascript:check() 在验证成功的时候,提交表单:document.form1.submit();*
11、第二讲结束 HYPERLINK /space.php?uid=10410 阳光2008-11-15 19:55:56 第三讲(参考 HYPERLINK /JavaEETeacher/archive/2008/03/11/2168471.aspx t _blank Java Web程序设计基础教程第3.4章)1、include指令 作用:把多个文件中需要共享的代码放在单独的文件中,然后在需要的时候使用该指令引入这个文件。典型的应用,把网站的头部和版权信息放在单独的文件中,在其他文件中包含这两部分。 基本的语法格式: file属性指出目标文件。 例:把index.jsp和register.jsp中
12、的共同部分做成单独的文件header.jsp(后缀名不一定是.jsp),然后在index.jsp和register.jsp中调用。 header.jsp中的内容如下: 电子书店 注册 最新图书 最畅销图书 查询图书 修改密码 查询订单购物车 在index.jsp中引入header.jsp的代码: 用户名: 口令: 欢迎光临我们的书店! 运行过程:在转换的时候,当遇到include指令的时候会把include指令指向的目标文件的内容拷贝到当前位置,替换include指令,这样最后形成一个文件。然后才编译形成class文件,然后运行。2、标签 我们使用登录功能的模拟来介绍。 首先,使用Java代码
13、完成判断,使用完成跳转,代码: 注意:不管跳转到success.jsp还是index.jsp,地址栏都是处理文件的名字。 的语法格式: page属性指出转向的目标文件。最后的结束符为“/”,斜杠不能省略。 另外一个可以完成跳转的方式是采用response.sendRedirect()。response和request一样,都是内容对象,可以直接访问。修改上面的文件: 和response.sendRedirect的运行效果相同(针对上面的这个例子)。 相同点:都是转向目标文件。 不同点:地址栏中显示的内容是不相同的,如果使用,地址栏显示当前文件的名字,如果使用response,地址栏显示的是转向
14、后的文件的名字。执行过程不同:使用相当于一次请求,使用response相当于两次请求。 使用的情况: index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用转向success.jsp之后,success.jsp还可以访问用户输入的信息,因为输入同一次请求。 使用response的请求: index.jsp中输入用户名和口令,提交给login_process.jsp,服务器保存用户的输入信息,使用response的sendRedirect方法相当于重新向服务器发送一次请求,这样上次的请求内容(用户名和口令)就不能共享了。3、标签 把inde
15、x.jsp中替换成 从运行效果上相同。 不同点:1、两个文件,目标文件是单独运行的,当前文件运行到标签的时候,转向执行标签所指向的目标文件,执行之后返回继续标签之后的内容。 2、指令是在编译(转换)的时候使用,在运行的时候起作用。 程序中如何选用:要导入的内容是不是每次都执行,如果每次都执行的话,应该使用,如果是在特定的条件下,应该使用。例如,登录之后要么转向success.jsp要么转向index.jsp,如果在程序中使用导入,应该用。4、和区别 把login_process.jsp中的替换成: 运行效果是相同的。但是有不同点,修改代码如下:处理文件的前半部分 处理文件的后半部分两次运行结果
16、不相同。分析原因: :先执行标签之前的内容,遇到标签的时候转向执行目标文件,执行完不返回,显示的内容为目标文件的内容,标签之前的内容执行,但是不显示。标签之后的内容不会执行,当然更不会显示。 :先执行标签之前的内容,遇到标签转向执行目标文件,执行完返回,继续执行标签之后的内容,显示的内容为:标签之前的内容+目标文件的内容+标签之后的内容,标签的前后都执行,都显示。5、使用标准标签库(JSTL)完成登录的判断过程 如何使用标签标签库:(1)得到标签库的实现文件,jstl.jar和standard.jar,放在WEB-INF下面的lib子文件夹。(2)在JSP文件中要声明标签库,通过tablib指
17、令进行声明: (3)使用标签: 要完成判断,可以使用标签标签库中的c:if标签。标签的基本格式: 条件成功要执行的内容 test表示测试条件,测试条件可以写常量,可以是表达式语言(EL,主要用于输出),主要使用表达式语言。 例如:要判断用户提交的用户名和口令是否是zhangsan。 注意:添加完标准标签库之后,需要重新启动服务器。6、使用session保存登录后的信息 在网站中设置了application session request pageContext对象保存内存中的信息。application是网站所有用户共享的存储变量的位置。session是网站为每个访问网站的人创建的,每个用户对
18、应一个session,也是存放变量的位置。request是为每个用户的每次请求设置的存储信息的位置,每次访问会有一个request。pageContext是每次访问的每个页面对应一个。常用的session和request。多次访问之间要共享信息可以使用session,如果在某次访问的多个页面之间共享信息使用request(例如,使用jsp:forwrad转向的文件和当前文件就属于同一次请求)。 登录后的用户信息应该放在session中。 要在这些范围中保存信息,可以使用标准标签库中的标签完成。 的基本语法格式: 要把用户名放到session中: *第三讲结束 HYPERLINK /space.
19、php?uid=10410 阳光2008-11-15 19:57:13 第四讲(参考 HYPERLINK /JavaEETeacher/archive/2008/03/11/2168471.aspx t _blank Java Web程序设计基础教程第6章)1、对Servlet的理解 Servlet是一种Java类。 Servlet能够完成与JSP相同的功能。能够接收用户的请求,能够调用功能类的方法,可以对用户进行响应。 Servlet和JSP同属于Java EE中Web层组件。2、如何编写一个Servlet 假设:该Servlet的功能为显示欢迎信息。 Java文件的编写过程:(1)声明包
20、(2)引入用到的其他的类 (3)类的编写 对于类:(1)类头修饰符 class关键字 类名 继承父类 实现接口 (2)类体成员变量 构造方法 对属性进行操作的方法 功能类方法 对于成员变量:修饰符类型 变量名(对象名) 对于方法(不包括构造方法):修饰符 返回值类型 方法名 参数列表 异常列表 方法体 对于方法体:变量的声明各种运算 调用其他的方法 返回结果 (1)声明包,假设包名为servletpackage servlet; (2)引入用到的类,javax.servlet.* javax.servlet.http.* java.io.*import java.io.*;import jav
21、ax.servlet.*;import javax.servlet.http.*; (3)类头的定义 访问控制符:public 类名:HelloServlet 继承父类:javax.servlet.http.HttpServlet 实现接口:没有要实现的接口public class HelloServlet extends HttpServlet (4)方法的定义 主要的方法:init方法(用于初始化) destroy方法(释放资源) doGet或者doPost(完成主要功能) 通常主要实现doGet方法或者doPost方法,分别对应客户端的get请求和post请求。public void d
22、oGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException / 设置编码方式GB2312,GBK,utf8 response.setContentType(text/html;charset=gb2312); / 得到输出流对象 PrintWriter out = response.getWriter(); out.println(欢迎学习JSP!);public void doPost(HttpServletRequest request,HttpServl
23、etResponse response) throws IOException,ServletException doGet(request,response);3、编译存放 需要用到javax.servlet.*和javax.servlet.http.*,两个包的实现在tomcat下面的lib中,名字为servlet-api.jar。 放在(编译后的Servlet):WEB-INF/classes 配置path: 把C:Program FilesJavajdk1.6.0bin添加到path中,但是不能破坏原有的路径。 配置classpath:把C:Program FilesApache So
24、ftware FoundationTomcat 6.0libservlet-api.jar;添加到classpath中。 编译:在命令行方式下进入到classes目录,然后使用 javac -d . HelloServlet.java -d表示生成包的路径,.表示在当前位置生成。4、配置Servlet 配置文件及位置:WEB-INF下面的web.xml。 配置包括两个方面:Servlet的声明 以及 Servlet访问方式的声明 Servlet的声明: hello servlet.HelloServlet 其中,表示这个servlet的名字,可以随便起。是对应的Servlet类,应该包含包的信
25、息。 Servlet访问方式的声明: hello /hello 其中,和Servlet声明中的用法相同,并且应该与Servlet声明中的名字保持一致。表示访问方式,决定了在客户端如何访问这个Servlet。5、访问Servlet HYPERLINK :8080/bookstore/hello t _blank :8080/bookstore/hello6、用Servlet完成login_process.jsp的功能 login_process.jsp主要功能,判断用户输入的用户名和口令是否合法,然后根据判断的结果选择界面对用户响应。 对于JSP文件来说,优势在于显示信息,login_proce
26、ss.jsp中的代码都不是显示信息的,主要用于控制。在Java Web应用中存在大量的这种现象。是Java Web中的控制功能。主要使用Servlet完成控制。 login_process.jsp的基本功能:获取用户的输入信息;进行判断;转向。 如果使用Servlet完成,功能代码应该写在doGet或者doPost方法中。对应上面的3个功能分别实现如下: 获取用户信息:用户信息存储在doGet或者doPost方法的第一个参数中,所以从参数中获取,获取的代码为 String username = request.getParameter(username); String userpass =
27、request.getParameter(userpass); 判断: if( username.equals(zhangsan) & userpass.equals(zhangsan) ) 转向响应界面: 第一种方式:response.sendRedirect(index.jsp); 第二种方式:与功能相同 RequestDispatcher rd = request.getRequestDispatcher(index.jsp);/ 参数是要转向的页面 rd.forward(request,response); / 完成跳转LoginProcessServlet.java代码如下:pack
28、age servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class LoginProcessServlet extends HttpServletpublic void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException / 获取用户输入的信息 String username = request.getParameter(userna
29、me); String userpass = request.getParameter(userpass); if( username.equals(zhangsan) & userpass.equals(zhangsan) ) RequestDispatcher rd = request.getRequestDispatcher(success.jsp);/ 跳转到成功的页面 rd.forward(request,response); / 完成跳转 else RequestDispatcher rd = request.getRequestDispatcher(index1.jsp);/ 跳
30、转到登录页面 rd.forward(request,response); / 完成跳转 public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException doGet(request,response);配置文件中添加如下代码: login_process servlet.LoginProcessServlet login_process /login_process 修改index1.jsp的代码(修改form所在行),修改前:修改后:*
31、第四讲结束 HYPERLINK /space.php?uid=10410 阳光2008-11-15 19:58:33 第五讲(参考Java Web程序设计基础教程第5、7章)1、JavaBean JavaBean是使用Java语言编写的组件。组件是组成一个大的系统的一部分,并且组件能够完成特定的功能,能够共享。 可以认为JavaBean是Java类,但是具有特定的功能,并且这些功能是共享的。例如,连接数据库的功能可以封装单独的Java类,常用处理方法可以封装成JavaBean。2、早期的JSP中提供的对JavaBean的支持 标签用于定义JavaBean的对象;标签用于设置JavaBean的属
32、性;用于获取并输出JavaBean的属性。 因为Java Web中,很少在JSP中直接访问JavaBean,所以实际上这些标签几乎没有用。现在主要在Servlet中访问JavaBean。3、JavaBean的编写和用法 例:以用户信息验证为例介绍JavaBean的编写。 1)声明包package bean; 2)引入相应的类或者包import java.sql.*;/ java.sql是访问数据库所需要的包 3)类头的定义public class UserBean 4)成员变量private String username;private String userpass; 5)构造方法/ Ja
33、vaBean要求应该提供一个无参数的构造方法 public UserBean() public UserBean(String username,String userpass) this.username = username; this.userpass = userpass; 6)对属性进行操作的方法 包括获取属性值的方法和对属性进行赋值的方法。 命名方法: 对于普通属性来说,如果属性为a,应该提供setA(属性类型 a)方法和getA()方法。 对于布尔类型的属性来说,应该提供类似于isA()方法。 public void setUsername(String username) th
34、is.username = username; public String getUsername() return username; public void setUserpass(String userpass) this.userpass = userpass; public String getUserpass() return userpass; 7)功能类方法 该JavaBean完成的功能是判断用户信息是否合法,需要在JavaBean中编写相应的方法。 public boolean login() return username.equals(userpass); 8)编译Jav
35、aBean 9)部署 所有的Java类都应该放在WEB-INF下面的classes下面,所以该JavaBean也应该放在这个地方。4、使用JDBC的准备工作 JDBC是Java DataBase Connectivity的缩写,是一组标准的接口,用于完成Java应用与各种数据库之间的交互。 要使用JDBC需要做哪些准备工作? 1)创建数据库 2)得到JDBC驱动程序,驱动程序是完成具体的交互过程的,每种数据库有自己特定的驱动程序,从数据库管理系统的提供商的网站下载 3)要知道数据库的相关信息:JDBC驱动程序的名字、数据库的位置、数据库的端口、用户名和口令、url的格式(建立连接的时候用) 注
36、意:我们使用JDBC-ODBC桥的方式连接数据库。JDBC-ODBC桥是一种类型的驱动程序,共有4种类型的驱动程序,JDBC-ODBC桥是建立在ODBC数据源基础上的。驱动是JDK中附带的,不用下载。5、创建数据库及测试数据create table usertable( username varchar(10) primary key, userpass varchar(10)insert into usertable values(lisi,lisi);insert into usertable values(zhangsan,zhangsan);6、创建ODBC数据源 在开始-设置-控制面
37、板-管理工具-数据源(ODBC)设置ODBC数据源的名字为bookstore7、修改login方法,通过数据库进行验证 1)使用JDBC连接数据库的基本过程 加载驱动程序; 建立与数据库之间的连接; 创建一个执行SQL语句的语句对象; 编写要执行的SQL语句; 使用语句对象执行SQL语句; 如果有结果,需要对结果进行处理; 关闭相关对象; 注意:异常处理。 2)修改login方法 public boolean login() throws Exception / return username.equals(userpass); / 第一步:加载驱动程序,如果使用其它的驱动程序,写出相应的名字
38、即可 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); / 第二步:建立连接,第一个参数是url(定位数据库),第二个参数是用户名,第三个参数是口令 Connection con = DriverManager.getConnection(jdbcdbc:bookstore,);/ bookstore是所创建的ODBC数据源的名字 / 第三步:创建SQL语句 String sql = select * from usertable where username=? and userpass=?; / 第四步:创建语句对象,用于执行SQL语句的 Prepa
39、redStatement stmt = con.prepareStatement(sql); / 对变量赋值,第一个参数表示变量的序号(第几个问号),第二个参数表示所赋的值 stmt.setString(1,username); stmt.setString(2,userpass); / 第五步:执行SQL语句,因为有查询结果,所以使用executeQuery方法,结果保存在rs中 ResultSet rs = stmt.executeQuery(); /rs相当于一个表格,有若干行、若干列组成,指针指向第一条记录的前面 / 第六步:对结果进行处理,使用next方法进行遍历,使用get方法得到
40、当前行的列 boolean b = rs.next(); / 第七步:关闭相关对象 rs.close(); stmt.close(); con.close(); return b; 3)修改LoginProcessServlet.java修改后的代码为:package servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import bean.*;public class LoginProcessServlet extends HttpServletpublic void doGet(HttpS
41、ervletRequest request,HttpServletResponse response) throws IOException,ServletException / 获取用户输入的信息 String username = request.getParameter(username); String userpass = request.getParameter(userpass); / 调用JavaBean,创建对象、初始化、然后调用方法 UserBean user = new UserBean(); user.setUsername(username); user.setUse
42、rpass(userpass); boolean b = false; try b = user.login(); catch(Exception e) / 当产生异常的时候,把异常信息输出在界面上 / 设置编码方式 response.setContentType(text/html;charset=gb2312); / 得到输出流对象 PrintWriter out = response.getWriter(); out.println(e.toString(); return; / 转向响应界面 if(b) RequestDispatcher rd = request.getRequest
43、Dispatcher(success.jsp);/ 跳转到成功的页面 rd.forward(request,response); / 完成跳转 else RequestDispatcher rd = request.getRequestDispatcher(index1.jsp);/ 跳转到登录页面 rd.forward(request,response); / 完成跳转 public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
44、doGet(request,response);找到: boolean b = user.login();修改为: boolean b = false; try b = user.login(); catch(Exception e) / 当产生异常的时候,把异常信息输出在界面上 / 设置编码方式 response.setContentType(text/html;charset=gb2312); / 得到输出流对象 PrintWriter out = response.getWriter(); out.println(e.toString(); return; HYPERLINK /spac
45、e.php?uid=10410 阳光2008-11-15 19:59:34 第六讲(参考Java Web程序设计基础教程第6、9章)1、分析登录功能 界面:登录界面index1.jsp;登录成功的界面login_success.jsp。 功能:UserBean的login方法完成登录的判断。 Servlet:LoginServlet.java (1)接收用户输入的用户名和口令(2)调用UserBean的login方法进行判断(3)根据方法的返回值选择界面响应。2、MVC模式 M表示模型,主要表示系统中的功能处理部分。例如,上面的UserBean就是一个模型,描述用户信息以及相关功能。 V表示视
46、图,表示系统中与人进行交互的部分。例如,上面的index1.jsp和login_success.jsp。 C表示控制器,建立模型与视图之间的关联关系。例如,上面的LoginServlet.java。 输入界面直接调用控制器,控制器接收用户在输入界面上输入的信息,控制器把信息传递给模型,调用模型的方法,方法会给控制器返回一个值,控制器根据这个值选择输出界面对用户响应。 MVC模式把系统的每一个功能都分解成这个3个部分。然后分别实现。3、采用MVC模式实现注册功能 一般先考虑V,包括输入界面和输出界面,对于注册功能来说,输入是注册界面,输出是注册成功或者失败的界面,通常使用JSP文件。 接下来考虑
47、M,功能如何实现,对于注册功能来说,需要把用户提交的信息写到数据库中。需要在UserBean中编写添加用户的方法。 考虑C,如何协调M和V。需要编写Servlet,在doGet或者doPost方法中主要完成:接收输入;调用UserBean的方法;选择界面响应。4、创建注册用的表create table usertable2( username varchar(10) primary key, userpass varchar(10), sex char(2), fav varchar(20), degree varchar(8), comment varchar(100), email var
48、char(30)5、V部分 采用原来的register.jsp和success.jsp。6、M部分 在UserBean中添加方法,add方法。方法代码如下: public boolean add() / 定义变量 Connection con = null; PreparedStatement stmt = null; String driverClass = sun.jdbc.odbc.JdbcOdbcDriver; String url = jdbcdbc:bookstore; String sql = insert into usertable2 values(?,?,?,?,?,?,?
49、); boolean success = true; try / 第一步:加载驱动 Class.forName(driverClass); / 第二步:建立连接 con = DriverManager.getConnection(url,); / 第三步:创建语句对象 stmt = con.prepareStatement(sql); / 第四步:对SQL语句中参数赋值 stmt.setString(1,username); stmt.setString(2,userpass); stmt.setString(3,sex); stmt.setString(4,fav); stmt.setStr
50、ing(5,degree); stmt.setString(6,comment); stmt.setString(7,email); / 第五步:执行SQL语句 int n = stmt.executeUpdate(); / 执行没有结果集返回的SQL语句使用executeUpdate方法,方法的返回值是整数,表示操作成功的记录数 if(n=0) success = false; catch(Exception e) success = false; System.out.println(e.getMessage(); finally try stmt.close(); catch(Excep
51、tion ee) try con.close(); catch(Exception ee) return success; 7、C部分 编写Servlet,完成添加的控制。控制器的代码如下:package servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import bean.*;public class AddUserServlet extends HttpServletpublic void doGet(HttpServletRequest request,HttpServletResp
52、onse response) throws IOException,ServletException / 请求中采用的编码方式是8859_1,当前的编码是gb2312,需要转换 request.setCharacterEncoding(gb2312); / 第一句话:获取用户输入的信息 String username = request.getParameter(username); String userpass1 = request.getParameter(userpass1); String sex = request.getParameter(sex); / 因为允许多选,所以结果有
53、可能是多个,应该使用数组接收。 String fav = request.getParameterValues(fav); String favStr = ; for(int i=0;ifav.length;i+) favStr += fav+; String degree = request.getParameter(degree); String comment = request.getParameter(content); String email = request.getParameter(email); / 第二句话:调用JavaBean,创建对象、初始化、然后调用方法 User
54、Bean user = new UserBean(); user.setUsername(username); user.setUserpass(userpass1); user.setSex(sex); user.setFav(favStr); user.setDegree(degree); user.setEmail(email); user.setComment(comment); boolean b = user.add(); / 第三句话:向页面传递信息 if(b) request.setAttribute(info,注册成功!); else request.setAttribute
55、(info,注册失败!); / 第四句话:转向响应界面 RequestDispatcher rd = request.getRequestDispatcher(success.jsp); rd.forward(request,response); / 完成跳转public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException doGet(request,response); 之后对Servlet进行配置,在web.xml中添加如下代码: a
56、ddUser servlet.AddUserServlet addUser /addUser 需要修改register.jsp中的form的属性action: 8、测试 编译、启动服务器,然后运行。 HYPERLINK /space.php?uid=10410 阳光2008-11-15 20:00:34 第七讲(参考Java Web程序设计基础教程第7章)1、共享连接数据库的代码 连接数据库的基本过程: 1)加载驱动程序; 2)创建连接; 3)编写SQL语句; 4)创建语句对象; 5)对参数赋值; 6)执行SQL 语句; 7)对结果进行处理; 8)关闭对象。 对于不同的SQL的执行,不同的地方
57、: SQL语句; 参数; 结果的处理方式; 提取相同部分分别编写成方法: Connection con = null; PreparedStatement stmt = null; ResultSet rs = null; String driverClass = sun.jdbc.odbc.JdbcOdbcDriver; String url = jdbcdbc:bookstore; / 完成连接的创建,相当于第1.2步 public Connection getConnection() throws Exception Class.forName(driverClass); / 加载驱动程
58、序 if(con = null) con = DriverManager.getConnection(url,); return con; / 创建语句对象 public PreparedStatement createStatement(String sql) throws Exception stmt = getConnection().prepareStatement(sql); return stmt; / 执行有结果集返回的方法 public ResultSet executeQuery() throws Exception rs = stmt.executeQuery(); ret
59、urn rs; / 执行没有结果集返回的方法 public int executeUpdate() throws Exception return stmt.executeUpdate(); / 关闭对象 public void close() if(rs != null) try rs.close();catch(Exception e) if(stmt != null) try stmt.close();catch(Exception e) if(con != null) try con.close();catch(Exception e) 2、修改上一次课的添加功能,使用这些共享方法 S
60、tring sql = insert into usertable2 values(?,?,?,?,?,?,?); boolean success = true; try / 创建语句对象 createStatement(sql); / 对SQL语句中参数赋值 stmt.setString(1,username); stmt.setString(2,userpass); stmt.setString(3,sex); stmt.setString(4,fav); stmt.setString(5,degree); stmt.setString(6,comment); stmt.setString
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专用打印机采购销售协议范本
- 2024年个人借款协议模板
- 2024年家用壁纸买卖协议模板
- 2023-2024学年浙江省余姚八中高考第四次模拟数学试题试卷
- 2024年企业融资中介协议范本
- 2024无财产瓜分离婚协议示范文本
- DB11∕T 1717-2020 动物实验管理与技术规范
- DB11∕T 1601-2018 毛白杨繁育技术规程
- 2024设备维护与保养协议范本
- 2024年专业收银员岗位聘用协议样本
- 基本函数的导数表
- 酒店的基本概念
- 重点但位消防安全标准化管理评分细则自评表
- 挂牌仪式流程方案
- 传输s385v200v210安装手册
- 风险调查表(企业财产保险)
- 农业信息技术 chapter5 地理信息系统
- 浅谈新形势下加强企业税务管理的对策研究
- 必看!设备管理必须要懂的一、二、三、四、五
- 空冷岛专题(控制方案、谐波及变压器容量选择)
- 结合子的机械加工工艺规程及铣槽的夹具设计
评论
0/150
提交评论