实验四jSP与Servlet训练
- 格式:doc
- 大小:157.50 KB
- 文档页数:10
实训4 JSP内置对象
实验目的:了解JSP内置对象,及其使用方法
掌握使用JSP的request对象处理页面提交信息的基本方法
实验内容:
实验一:利用request对象获取表单提交信息
制作一个用户信息提交页面,如下所示:
注意内容:
要解决其中的多项选择“爱好”这一项的信息获取,需要采用到数组,使用方法如下:String 数组1[]=request.getParameterValues("输入框名");
提交的信息便存储进入数组1中,输出时候使用循环即可。
用户填写完成后完成,提交到另一个页面,将用户信息显示出来,如下示:
要求:1.页面提交的用户姓名为中文,不能出现乱码
2.表单中的多项选择内容要求正确显示
实训项目二:request对象
在前面实验的基础上,编写程序实现,若用户提交的用户名和密码为空的时候,提示有关错误信息,并跳转回用户信息填写页面,若信息不为空,则跳转到欢迎页面,显示XX用户,欢迎您。
实验步骤:
建立工程—编写程序—编译程序—调试、运行程序。
(可以参考“实验一“中任意一种方法来进行)
实验小结:。
4 实验四 Servlet容器模型一.实验目的1. 掌握Web应用程序的DD文件web.xml的配置方法和作用;2. 掌握如何通过ServletConfig获取Servlet的初始化参数;3. 掌握ServletContext的概念,如何获得ServletContext对象;4. 掌握如何通过RequestDispatcher转发请求。
二.实验内容1. 建立一个名为bookstore的Web应用程序在Tomcat的webapps目录下,建立一个如下所示的目录结构:|- bookstore|- html (包含所有的HTML文件)|- jsp (包含所有的JSP文件)|- images (包含所有的GIF、JPEG和BMP图象文件)|- index.html (默认的HTML文件)|- WEB-INF|-classes├ lib├ web.xml图4.1 bookstore应用程序的目录结构这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。
2. 使用ServletConfig检索Servlet的初始化参数【步骤1】编写ConfigDemoServlet程序,内容如下:package com.demo;import java.io.*;import java.sql.*;import javax.servlet.*;import javax.servlet.http.*;public class ConfigDemoServlet extends HttpServlet{String servletName=null;ServletConfig config=null;String email=null;String telephone=null;public void init() {config = getServletConfig();servletName = config.getServletName();email = config.getInitParameter("email");telephone = config.getInitParameter("telephone");}public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("Servlet名称:"+servletName+"<br>");out.println("Email地址:"+email+"<br>");out.println("电话:"+telephone);out.println("</body></html>");}}【步骤2】修改web.xml文件,在其中添加下面Servlet定义和初始化参数定义<servlet><servlet-name>configDemoServlet</servlet-name><servlet-class>com.demo.ConfigDemoServlet</servlet-class><init-param><param-name>email</param-name><param-value>**************</param-value></init-param><init-param><param-name>telephone</param-name><param-value>8899123</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>configDemoServlet</servlet-name><url-pattern>/configDemo.do</url-pattern></servlet-mapping>【步骤3】在浏览器的地址栏中输入下面URL访问该Servlet:http://localhost:8080/bookstore/configDemo.do程序运行结果如图3.2所示:图3.2 ConfigDemoServlet的运行结果3. ServletContext的使用修改上面程序,将email地址和电话使用ServletContext初始化参数传递给ConfigDemoServlet。
JSP与Servlet技术实验指导书东北大学软件学院二零一四年三月目录前言 (2)实验要求 (3)实验1熟悉开发环境及实现系统界面(4学时) (6)1.实验目的 (6)2.实验基本要求 (6)3.预习内容 (6)4.实验基本步骤 (6)实验2控制层的实现(4学时) (7)1.实验目的 (7)2.实验基本要求 (7)3.预习内容 (7)4.实验基本步骤 (7)实验3数据层的实现(4学时) 01.实验目的 02.实验基本要求 03.预习内容 04.实验基本步骤 0实验4系统的整合和测试(4学时) 01.实验目的 02.实验基本要求 03.预习内容 04.实验基本步骤 0参考资料 (1)前言《JSP与Servlet技术》桌面应用程序的基础上,学习Web应用程序的开发,理解基于MVC的Web应用程序,内容主要是学习基于Java语言的Web开发技术,但重点在于能把这些技术应用到实践当中,因此,实践环节很重要,要求学生能够开发简单的Web应用程序。
上机实验的目的是:(1) 加深对讲授内容的理解,掌握Web程序开发的关键技术,如MVC设计模式、HTML、Javascript、Servlet、JSP、JDBC和DAO等技术,基于这些技术,设计并实现一个简单的Web应用程序。
(2) 练习上机调试程序,加强学生发现及解决问题的能力。
实验要求1.实验时,完成一个简单的基于Web的学生选课系统,主要实现学生注册模块、学生选课管理模块和课程维护模块这三个模块,采用Servlet、JSP、JDBC、DAO等关键技术,并使用JSP Model1和JSP Model2 两种模式来实现。
实验中采用的开发环境:编译器:JDK1.5以上;Web服务器:Tomcat5.5以上;插件开发平台:MyEclipse6.0 GA以上;数据库服务器:MySQL4.1以上。
2.功能模块划分系统共分为三个模块:学生注册模块、学生选课模块和课程维护模块,功能模块图如图1所示。
编写一个Web留言板程序功能要求1)留言板提供在线注册功能,留言者必须为该留言板系统的注册用户2)留言板用户分为管理员和普通用户,管理员为系统设定的,普通用户则是通过在线注册的系统用户i.管理员可以删除当前留言板系统中的所有留言信息ii.普通用户只能修改留言板中自己的留言信息3)每个想添加或查看留言的人,必须先通过系统登录,才能对留言信息进行相应操作技术要求:1)JSP负责响应显示、Servlet负责接收请求调用后台类处理数据2)使用Filter进行权限验证和字符集转换3)使用JS对表单进行客户端验证(如:学完分页处理、自定义标签,可要求在JSP上使用自定义标签处理页面内容)留言板系统数据库物理试图:参考页面浏览:附:建表SQLCREATE TABLE MsgBoard_Info (msg_Id NUMBER NOT NULL, ---留言编号msg_title V ARCHAR2(40) NULL, ---留言主题msg_content V ARCHAR2(200) NULL, ---留言内容msg_date DATE NULL, ---留言时间user_id NUMBER NULL ---留言者编号);ALTER TABLE MsgBoard_InfoADD ( PRIMARY KEY (msg_Id) ) ;CREATE TABLE User_Info (user_id NUMBER NOT NULL, ---用户编号user_name V ARCHAR2(50) NULL, ---用户名user_password V ARCHAR2(40) NULL, ---用户密码user_type NUMBER NULL ---用户类型(1---管理员2---普通用户));COMMENT ON COLUMN User_er_type IS '1---管理员2---普通用户';ALTER TABLE User_InfoADD ( PRIMARY KEY (user_id) ) ;ALTER TABLE MsgBoard_InfoADD ( FOREIGN KEY (user_id)REFERENCES User_InfoON DELETE SET NULL ) ;。
jsp servlet练习题JSP(Java Server Pages)和Servlet是Java Web开发中非常重要的两个技术。
JSP和Servlet相互依赖,可以协同工作来创建动态的web 页面和处理用户请求。
为了帮助读者更好地掌握和理解JSP和Servlet 的使用,下面给出了一些练习题供大家练习。
1. 编写一个简单的JSP页面,展示一个Hello World的欢迎消息。
2. 创建一个Servlet,能够接收用户输入的用户名和密码,并验证是否正确。
3. 编写一个JSP页面,展示一个注册表单,包括用户名、密码和确认密码,并使用JavaScript验证表单的有效性。
4. 创建一个Servlet,接收用户提交的学生信息(包括姓名、年龄、性别等),并将其保存到数据库中。
5. 编写一个JSP页面,用于展示一个学生信息列表,从数据库中读取学生信息并动态生成表格。
6. 创建一个Servlet,实现文件的上传和下载功能。
7. 编写一个JSP页面,展示一个购物车功能,用户可以添加商品到购物车,并显示购物车的商品列表和总价。
8. 创建一个Servlet,实现用户的登录和注销功能,用户登录后可以访问受保护的页面。
9. 编写一个JSP页面,展示一个新闻列表,从数据库中读取新闻信息并以分页的形式展示。
10. 创建一个Servlet,接收用户提交的评论内容,并将其保存到数据库中。
以上是一些JSP和Servlet的练习题,通过实践这些题目,可以更好地掌握和理解JSP和Servlet的使用。
希望读者可以充分利用这些练习题,加深对JSP和Servlet的学习和应用。
注意:在完成练习题时,可以根据具体需求进行适当的扩展和修改,以增强练习的难度和完整性。
同时,还可以通过查阅相关文档和参考资料来获取更多的JSP和Servlet知识,为实际项目的开发打下坚实的基础。
实验四 Servlet的应用实验内容和要求:用Servlet来完成实验三的所有任务,即先登录,然后留言,再显示留言。
采用JSP+JavaBean+Servlet开发模式。
实验步骤如下:1.创建登录页面login.jsp<%@page language="java"import="java.util.*"pageEncoding="gb2312"%> <html><head></head><body><form action="DoLogin"method="get"> <!--注意此处设为get方法-->用户名:<input type="text"name="username"/><br>口令:<input type="password"name="password"/><br><input type="submit"value="提交"/><input type="reset"value="重置"/></form></body></html>2.创建处理登录的Servlet:DoLogin.java,过程如下:选择项目中src文件夹,New Servlet,弹出Create a new Servlet对话框,设置如下(05为项目名称)单击next后,见下图,只对Servlet/Jsp Mapping URL :作如下修改,单击finish.此时,web.xml中应存在如下Servlet配置信息:<servlet><description>ServletExample</description><display-name>firstServlet</display-name><servlet-name>DoLogin</servlet-name><servlet-class>servlet.DoLogin</servlet-class></servlet><servlet-mapping><servlet-name>DoLogin</servlet-name><url-pattern>/DoLogin</url-pattern></servlet-mapping>其中,<url-pattern>/DoLogin</url-pattern>行表明,该Servlet可以用这个URL 访问,http://localhost:8080/05/DoLoginDoLogin.java代码如下package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class DoLogin extends HttpServlet {//因为登录表单是以get方式提交的,所以重写doGet方法,运行时调用此方法public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String userName=request.getParameter("username");//获取用户名HttpSession session = request.getSession();session.setAttribute("name",userName); //用户名写入session,显示留言时(showMessage.jsp)需要String passWord=request.getParameter("password");//获取口令if(userName.equals("admin")&&passWord.equals("123")) //用户名和密码正确response.sendRedirect("messageBoard.jsp"); //重定向到留言页面elseresponse.sendError(500,"登陆错误,用户名或密码不正确!");}}3.创建留言页面messageBoard.jsp<%@page contentType="text/html;charset=gb2312"%><form action="DoMessage"method="post"><!—注意此处设为post方法--> <table border="1"rules="rows"><tr height="30"><td>留言标题:</td><td><input type="text"name="title"size="35"></td> </tr><tr><td>留言内容:</td><td><textarea name="content"rows="8"cols="34"></textarea></td></tr><tr align="center"height="30"><td colspan="2"><input type="submit"value="提交"><input type="reset"value="重置"></td></table></form>4.创建值JavaBean:Message.java同代码3-55.创建工具JavaBean:Mytools.java同代码3-66.创建处理留言的Servlet:DoMessage.java,如下图:DoMessage.java代码如下:package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DoMessage extends HttpServlet {//因为留言信息是以post方式提交的,所以重写doPost方法,运行时调用此方法public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {bean.valuebean.Message message=new bean.valuebean.Message();message.setTitle(request.getParameter("title"));//保存留言标题message.setContent(request.getParameter("content"));//保存留言内容request.setAttribute("msg", message);//将对象message保存到request中//下面2行实现转发到showMessage.jspRequestDispatcherdispatcher=request.getRequestDispatcher("showMessage.jsp");dispatcher.forward(request, response);}}7.创建显示留言页面showMessage.jsp<%@page contentType="text/html; charset=gb2312"%><%@page import="bean.toolbean.MyTools"%><%@page import="bean.valuebean.Message"%><%Message message=(Message)request.getAttribute("msg"); %><html><title>显示留言信息</title><body>留言者:<%=session.getAttribute("name") %><br>留言标题:<%=MyTools.change(message.getTitle()) %><br>留言内容:<%=MyTools.change(message.getContent()) %></body></html>。
jsp课程实验报告《JSP课程实验报告》一、实验目的本次实验的主要目的是通过实际操作,掌握JSP(Java Server Pages)的基本语法和应用,了解JSP在Web开发中的重要性和作用。
二、实验内容1. JSP基本语法:学习JSP的基本语法,包括JSP指令、JSP注释、JSP表达式等。
2. JSP页面的设计与开发:通过实际案例,设计并开发一个简单的JSP页面,包括页面布局、动态数据展示等。
3. JSP与Servlet的结合:了解JSP与Servlet的关系,学习如何在JSP页面中调用Servlet,实现页面与后台逻辑的交互。
三、实验过程1. 学习JSP基本语法:通过阅读相关教材和在线资料,了解JSP的基本语法规则,并进行实际的代码编写练习。
2. JSP页面的设计与开发:根据实验要求,设计并开发一个简单的JSP页面,包括页面布局、动态数据展示等,通过实际操作加深对JSP的理解。
3. JSP与Servlet的结合:学习如何在JSP页面中调用Servlet,实现页面与后台逻辑的交互,并进行相关实验操作。
四、实验结果通过本次实验,我深入了解了JSP的基本语法和应用,掌握了JSP页面的设计与开发技巧,同时也了解了JSP与Servlet的结合使用,实现了页面与后台逻辑的交互。
通过实际操作,我对JSP有了更深入的认识,为以后的Web开发工作打下了坚实的基础。
五、实验总结本次实验让我深入了解了JSP的重要性和作用,掌握了JSP的基本语法和应用技巧,同时也提高了我在Web开发中的实际操作能力。
通过不断地实践和学习,我相信我将能够更好地运用JSP技术,提高自己的开发水平,为未来的工作打下更加坚实的基础。
希望今后能够继续深入学习JSP相关知识,不断提升自己的技术能力。
第 页 共 页北方民族大学试卷 课程代码: 课程: Servlet-Jsp 试题(请注明A 卷或B 卷) 一、单项选择题(每小题2分,共15题30分)1. 下边哪个不是FORM 的元素?( ) A. Input B. textarea C. select D. table2. <td align=”xxxx”>中的align 属性是什么含意?( ) A. 加粗 B. 斜体 C. 对齐方式 D. 边框样式3. 当在JSP 文件中要使用到Vector 对象时,应在JSP 文件中加入以下哪个语句?( ) A. <jsp:include file=”java.util.*” /> B. <jsp:include page=”java.util.*” /> C. <%@ page import=”java.util.*” %> D. <%@ page include=”java.util.*” %>4.Servlet 有几种方法控制会话?( ) A .1种 B .2种 C .3种 D .4种5.Servlet 第一次加载时首先调用什么方法?( ) A .doGet() B .doPost() C .init() D .service()6. 在Servlet 的生命周期中,init()方法会执行几次?( ) A .客户端每次向Servlet 发送请求时执行 B .在Servlet 第一次加载时执行C .每个线程执行一次D .在需要时执行7. 下面那个不是Servlet 的特点?( )A .不需要手动编译就可以直接运行B .一旦Servlet 被加载,在它被更改之前都不需要重新加载C .具有跨平台性D .Servlet 能够直接和Web 服务器交互8. jsp:forward 和sendRedirect 都是用来做页面跳转的,描述错误的是?( )A. forward 之后可以使用原来的request 对象,而且效率较高。
1Tomcat1.1Tomcat配置在EC中window选项中打开prefferenct配置面板,选择server,安装tomcat(如下图)点击Add按钮选择tomcat版本,下一步指定tomcat和jdk所在路径点击完成(如下图)1.2给工程建立tomcat访问选定工程,然后在server面板中点击鼠标右键,选择新建服务并指定tomcat版本(如下图)建立完成后,双击服务,打开配置界面设立服务名和访问端口(如下图)打开服务的server.xml文件,查看并配置访问访问路径访问路径)1.3访问常见错误1.3.1404找不到指定页面原因A:该页面不存在、B:程序中指定页面时将页面名称写错解决方法:A:查看该页面是否存在、B:仔细检查代码,查看代码中指定页面地方是否将页面名称写错1.3.2500程序错误原因:程序出现错误解决方法:打开ec查看控制台所报错误,根据控制台信息定位问题所在的地方、仔细检查所编写的代码。
2HTML2.1什么是htmlHtml是文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言2.2Html常用元素(标签)head、title、body、tr、td、input、img、br、p、div、li、button、select2.3Html文档结构2.3.1Html网页此元素可告知浏览器其自身是一个HTML 文档。
<html> 与</html> 标签限定了文档的开始点和结束点,在它们之间是文档的头部和主体2.3.2头部head2.3.2.1M eta<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
<meta> 标签位于文档的头部,不包含任何内容。
<meta> 标签的属性定义了与文档相关联的名称/值对2.3.2.2文档标题title描述当前文档名称2.3.2.3引入样式文件链接一个外部样式表2.3.2.4引入javascript<script> 标签用于定义客户端脚本,比如JavaScript。
实验四 Servlet基础编程
一、实验目的:
编写Servlet代码,熟悉并掌握Servlet的使用和配置。
二、实验内容:
在MyEclipse环境下编写Servlet代码,正确配置后完成相应的功能,读取用户提交信息,调试运行程序。
三、实验要求:
1. 熟悉并掌握Servlet的编写和配置;
2. 掌握通过HttpServletRequest对象读取请求参数,通过HttpServletResponse对象向客户端浏览器输出内容;
3.掌握访问运行Servlet的正确地址写法;
3. 写出实验报告。
四、实验学时:2学时
五、实验步骤:
1.进入MyEclipse环境,新建Web Project;
2.改造bookAdd.html页面,实现将书籍添加信息提交至一个Servlet,通过该Servlet 读取请求参数信息并显示,要求显示在一个表格中,表格为多行两列,第一列显示参数名,第二列显示参数值;
3. 要求能正确输出中文;
4.调试运行程序。
第1章课后练习选择题1. 以下何者适合使用GET请求来发送?(A)使用者名称、密码(B)检视论譠页面(C)信用卡资料(D)查询数据的分页答案:B、D提示:敏感性数据不应使用GET来发送。
论譠页面、数据分页可以使用GET,便于使用者设定为书签。
2. 以下何者应该使用POST请求来发送?(A)使用者名称、密码(B)档案上传(C)搜寻引擎的结果画面(D)BLOG文件答案:A、B、D提示:敏感性数据、大量数据不应使用GET来发送。
搜寻引擎结果画面可以使用GET,便于使用者设定为书签。
3. HTTP哪个请求方式,请求参数会出现在网址列上?(A)GET(B)POST答:A4. 以下何者适合使用GET请求来发送?(A)检视静态页面(B)查询商品数据(C)新增商品资料(D)删除商品数据答案:A、B提示:这题在考等幂操作,不改变服务器状态的查询应使用GET。
5. 以下何者应该使用POST请求来发送?(A)查询商品数据(B)新增商品资料(C)更新商品数据(D)删除商品数据答案:B、C、D提示:这题在考非等幂操作,会改变服务器状态的查询应使用POST。
6. 以下何者是属于客户端执行的程序?(A)JSP(B)JavaScript(C)Servlet(D)Applet答案:B、D7. Servlet/JSP主要是属于哪个Java平台的规范之中?(A)Java SE(B)Java ME(C)Java EE答:C8. Servlet/JSP必须基于哪一类型的容器才能提供服务?(A)Applet容器(B)应用程序客户端容器(C)Web容器(D)EJB容器答:C9. Web容器在收到浏览器请求时,会如何处理请求?(A)使用单一执行绪处理所有请求(B)一个请求就建立一个执行绪来处理请求(C)一个请求就建立一个行程来处理请求(D)一个请求就执行一个容器来处理请求答:B10. Java EE中各技术标准最后将由什么文件明订规范?(A)JCP(B)JSR(C)JDK答:B提示:JCP是组织名称。
ServletJSP程序设计课后习题答案第1章Web技术简介1.6.1选择题1.C2.D3.D1.6.2填空题1.JSP2.JSP Model 1和JSP Model 23.JSP+JavaBean+Servlet、J2EE/JavaEE1.6.3简答题1.简述JSP的工作原理。
答:所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。
当第一次运行一个JSP页面时,JSP引擎要完成以下操作:●将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序。
●JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。
●JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。
●服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。
由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。
当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
2.简述JSP的两种体系结构。
答:JSP规范中分别称作JSP Model 1 和JSP Model 2,它们的本质区别在于处理批量请求的位置不同。
Model1,在Model1体系中,JSP页面独自响应请求并将处理结果返回客户。
这里仍然存在显示与内容的分离,因为所有的数据存取都是由JavaBean来完成的。
尽管Model1体系十分适合简单应用的需要,它却不能满足复杂的大型Web应用程序需要。
不加选择地随意运用Model 1,会导致JSP页内被嵌入大量的脚本片段或Java代码。
尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的这就确实是个问题了。
从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。
实验四Servlet基础一、实验目的理解Servlet的工作原理,掌握Servlet的应用开发方法;掌握常见Servlet ;二、实验要求1. 理解Servlet的应用。
2. 掌握Servlet的编程技术。
3. 熟练使用Eclipse开发Servlet应用三、实验内容(一)用Servlet获取表单数据1.建立一个Servlet文件accept.java和一个register.jsp文件,实现用Servlet实现获取表单数据的功能。
♦程序功能:利用Servlet的方式实现表单数据的获取。
♦参考源代码:accept.javaimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class acceptUserRegist extends HttpServlet{ public String codeToString(String str){//处理中文字符串的函数String s=str;try{ byte tempB[]=s.getBytes("ISO-8859-1");s=new String(tempB);return s; }catch(Exception e){return s;} }public void init(ServletConfig config) throws ServletException{ super.init(config); }public void doPost(HttpServletRequest request,HttpServletResponse response ) throws ServletException,IOException{//设置mimeresponse.setContentType("text/html;charset=GB2312");PrintWriter out=response.getWriter();out.println("<HTML><head><title>接收新用户注册</title></head><BODY>");out.println("这是新用户注册所提交的数据:<br>");out.println("用户名是:"+codeToString(request.getParameter("username"))+"<br>");out.println("密码是:"+codeToString(request.getParameter("userpassword"))+"<br>");out.println("性别是:"+codeToString(request.getParameter("sex"))+"<br>");out.println("出生年月是:"+request.getParameter("year")+request.getParameter("month")+request.getParamet er("day")+"<br>");out.println("电子邮箱是:"+request.getParameter("email")+"<br>");out.println("家庭住址是:"+codeToString(request.getParameter("address"))+"<br>");out.println("</body> </html>");} }register.jsp<%@ page contentType="text/html;charset=gb2312"%><script language="javascript">function on_submit(){//验证数据的合法性if (ername.value == ""){ alert("用户名不能为空,请输入用户名!");ername.focus();return false;}if (erpassword.value == ""){alert("用户密码不能为空,请输入密码!");erpassword.focus();return false; }if (form1.reuserpassword.value == ""){ alert("用户确认密码不能为空,请输入密码!");form1.reuserpassword.focus();return false;}if (erpassword.value != form1.reuserpassword.value){ alert("密码与确认密码不同");erpassword.focus();return false;}if (form1.email.value.length!= 0){for (i=0; i<form1.email.value.length; i++)if (form1.email.value.charAt(i)=="@")break;if (i==form1.email.value.length){alert("非法EMail地址!");form1.email.focus();return false;} }else{alert("请输入Email!");form1.email.focus();return false; } }</script><html><head><title>新用户注册</title></head><body><form method="POST" action="servlet/accept" name="form1" onsubmit="returnon_submit()">新用户注册<br>用户名(*):<input type="text" name="username" size="20"><br>密 码(*):<input type="password" name="userpassword" size="20"><br> 再输一次密码(*):<input type="password" name="reuserpassword" size="20"><br> 性别:<input type="radio" value="男" checked name="sex">男<input type="radio" name="sex" value="女">女<br>出生年月:<input name="year" size="4" maxlength=4>年<select name="month"><option value="1" selected>1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="8">7</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option></select>月<input name="day" size="3" maxlength=4>日<br>电子邮箱(*):<input name="email" maxlength=28><br>家庭住址:<input type="text" name="address" size="20"><br><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2"><br></form></body></html>2.编译并运行程序。
《JSP Servlet Ajax 开发技术》课程结业测试题一、选择题1) 下面( )技术不是 Ajax 的常用技术。
A. JavaScriptB. XMLC. CSSD. JUnit2) 下面( )不是 XMLHttpRequest 对象的方法名。
A. openB. sendC. readyStateD. responseText3) 当 XMLHttpRequest 对象的状态发生改变时调用myCallback 函数,下列正确的是( )。
A. xmlHttpRequest.myCallback = onreadystatechange;B. xmlHttpRequest. onreadystatechange = (myCallback);C. xmlHttpRequest. onreadystatechange = (new function() {onreadystatechange});D. xmlHttpRequest. onreadystatechange = myCallback;4) 关于 XMLHttpRequest 对象的五种状态,下列说法正确的是( )。
A. 1 表示新创建B. 2 表示初识化C. 3 表示发送数据完毕D. 4 表示接受结果完毕5) 不同的 HTTP 请求响应代码表示不同的含义,下面表示请求被被接受,但处理未完成的是( )。
A. 200B. 202C. 400D. 4046) HttpServletResponse 的( )方法用于将一个 HTTP 请求重定向到另一个 URL。
A. sendURL( )B. redirectURL( )C. sendRedirect( )D. getRequestDispatcher( )7) 在 Servlet 生命周期中,对应服务阶段的方法是( )。
A. init( )B. doPost( )C. destroy( )D. service( )8) 下列有关 Servlet 的生命周期,说法不正确的是( )。
实验四jSP与Servlet训练实验四 JSP与Servlet训练⼀、实验⽬的:编写JSP代码,熟悉并掌握JSP的基本语法、控制结构、表达式、脚本段、JSP指令及JSP动作;熟悉并掌握JSP的内置对象:request、response、out、session、application、exception、page的使⽤。
编写Servlet代码,熟悉并掌握Servlet的使⽤和配置。
⼆、实验内容:在MyEclipse环境下编写JSP代码,运⽤JSP的基本语法、控制结构、表达式、脚本段、JSP指令及JSP动作完成相应的功能,调试运⾏程序;运⽤JSP的内置对象:request、response、out、session、application、exception、page完成相应的功能,调试运⾏程序。
在MyEclipse环境下编写Servlet代码,正确配置后完成相应的功能,调试运⾏程序。
三、实验要求:1. 熟悉并掌握JSP的基本语法、控制结构、表达式、脚本段;2. 熟悉并掌握JSP的指令及JSP动作;3. 熟悉并掌握JSP的内置对象;4. 运⽤各种JSP内置对象完成规定功能;5. 熟悉并掌握Servlet的编码和配置;6. 运⽤Servlet技术完成规定功能;7. 写出实验报告。
四、实验学时:4学时五、实验步骤:1.进⼊MyEclipse环境,新建⼀个Web Project;2. 利⽤JSP技术完成注册信息的提交及验证以及显⽰功能,完成两个页⾯的设计:第⼀个HTML页⾯如图,第⼆个JSP页⾯调⽤JAVABEAN 接收注册信息验证后显⽰⽤户在第⼀个页⾯中的注册结果。
3. 利⽤MVC模型完成上述实验,第⼆个页⾯的功能由Servlet完成。
4. 调试运⾏程序;六、实验代码:Javabean的⽅法:1.acceprPace.javapackage test;public class acceptPara{String userid;String username;String userpass;String userpass2;String birthday;String degree;String local;String email;String address;String phone;String comment;public void setuserid(String value){/doc/0813217650.htmlerid=value;}public String getuserid(){return userid;}public void setusername(String value){ /doc/0813217650.html ername=value;}public String getusername(){return username;}public void setuserpass(String value){ /doc/0813217650.html erpass=value;}public String getuserpass(){return userpass;}public void setuserpass2(String value){ /doc/0813217650.html erpass2=value;}public String getuserpass2(){return userpass2;}public void setbirthday(String value){ this.birthday=value;}public String getbirthday(){return birthday;}public void setdegree(String value){this.degree=value;}public String getdegree(){return degree;}public void setlocal(String value){this.local=value;}public String getlocal(){return local;}public void setemail(String value){this.email=value;}public String getemail(){return email;}public void setaddress(String value){ this.address=value; }public String getaddress(){return address;}public void setphone(String value){this.phone=value;}public String getphone(){return phone;}public void setcomment(String value){/doc/0813217650.htmlment=value;}public String getcomment(){return comment;}public void acceptPara(){} }2.register.html。
JSP与Servlet技术
实验报告
东北大学软件学院
2014年4月
1. 系统分析与设计
1.1 系统功能描述
1.2 系统功能流程
1.3 数据库设计
2.系统实现与测试
2.1 系统采用的关键技术
2.2 关键程序流程
2.3 关键代码分析
2.4 出现的问题及解决
2.5 运行结果
3.分析与总结
对系统的运行情况进行分析,列出系统遗留的问题及可能解决的途径,总结本次编写程序所取得的经验。
如果程序未能通过,则应分析其原因。
对实验的方式和内容提出建设性的建议。
参考文献
例:
[1] 萨师煊,王珊.数据库系统概论(第三版)[M].北京: 高等教育出版
社,2002,122-150.
[2] 侯敏.Java编程思想[M].北京:机械工业出版社,2002,22-35.。
昆明理工大学信息工程与自动化学院学生实验报告( 2013—2014学年第二学期)课程名称:JAVA EE技术开课实验室:信自楼444 2013 年 10 月 19 日年级、专业、班计科112学号201110405214姓名周英明成绩实验项目名称Servlet与JSP编程指导教师卫守林教师评语教师签名:年月日一、实验目的1、掌握Servlet的请求和响应的编程2、掌握Servlet与JSP的差异3、掌握Servlet与JSP的数据交互4、完成用户管理功能二.实验内容完成用户的增加、删除、修改、列表功能,要求页面展示的部分需要用JSP完成,业务逻辑由Servlet完成。
三、步骤及具体实施(一、视图:1.用户登录页面:2.用户管理页面:3.增加用户:4.修改:(二)javaeebean1.创建数据库表格:/****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [id],[name],[password],[sex],[age]FROM[SQLdata].[dbo].[student]order by id2.用javaee.bean封装用户信息:package javaee.bean;/*** @author help*封装一条信息的所有属性*/public class javabean {private int id;private String name;private String password;private String sex;private int age;public int getId( {return id;}public void setId(int id {this.id = id;}public String getName( {return name;}public void setName(String name { = name;}public String getPassword( {return password;}public void setPassword(String password { this.password = password;}public String getSex( {return sex;}public void setSex(String sex { this.sex = sex;}public int getAge( {return age;}public void setAge(int age {this.age = age;}}3.用javaee.bean封装用户信息:package javaee.bean;import java.sql.Connection;import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;import java.sql.SQLException; import java.util.ArrayList;import java.util.List;/*** @author help*操作数据库的方法*/public class SqlBean {Connection con;PreparedStatement pre;ResultSet rs;public SqlBean({if(rs!=null;{try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver";} catch (ClassNotFoundException e {e.printStackTrace(;}try {con=DriverManager.getConnection("jdbc:sqlserver://localhost:14 33;DatabaseName=SQLdata","sa","123581321";} catch (SQLException e {e.printStackTrace(;}}}/*** @author help**插入新的一条记录* @return*/public int getinsertuser(String sql,javabean jBean {int count =0;try {pre = con.prepareStatement(sql;pre.setInt(1,jBean.getId(;pre.setString(2,jBean.getName(;pre.setString(3,jBean.getPassword(;pre.setString(4,jBean.getSex(;pre.setInt(5,jBean.getAge(;count=pre.executeUpdate(;} catch (SQLException e {e.printStackTrace(;}finally{try {pre.close(;con.close(;} catch (SQLException e {// TODO Auto-generated catch blocke.printStackTrace(;}}return count;/*** @author help**删除一条记录* @return*/public int getdeleteuser(String sql,int id {int count =0;try {pre = con.prepareStatement(sql;pre.setInt(1, id;count=pre.executeUpdate(;} catch (SQLException e {e.printStackTrace(;}finally{try {pre.close(;con.close(;} catch (SQLException e {// TODO Auto-generated catch blocke.printStackTrace(;}return count;}/*** @author help**根据ID查询某一条记录* @return*/public javabean getsearchById(String sql,int id {javabean jBean = new javabean(;try {pre = con.prepareStatement(sql;pre.setInt(1, id;rs=pre.executeQuery(;while(rs.next({jBean.setId(rs.getInt("id";jBean.setName(rs.getString("name";jBean.setPassword(rs.getString("password"; jBean.setSex(rs.getString("sex";jBean.setAge(rs.getInt("age";}} catch (SQLException e{e.printStackTrace(;}return jBean;}/*** @author help**更新某一条记录* @return*/public int getupdateuser(String sql,javabean jBean {int count =0;try {pre = con.prepareStatement(sql;pre.setInt(5,jBean.getId(;pre.setString(1,jBean.getName(;pre.setString(2,jBean.getPassword(;pre.setString(3,jBean.getSex(;pre.setInt(4,jBean.getAge(;count = pre.executeUpdate(;} catch (SQLException e {// TODO Auto-generated catch blocke.printStackTrace(;}finally{try {pre.close(;con.close(;} catch (SQLException e {// TODO Auto-generated catch block e.printStackTrace(;}}return count;}/*** @author help**显示所有记录* @return*/public List getuserlist(String sql {List list = new ArrayList >( ;//获取prepareStatement对象try {pre = con.prepareStatement(sql;rs =pre.executeQuery(;while(rs.next({javabean jBean =new javabean(;jBean.setId(rs.getInt("id";jBean.setName(rs.getString("name";jBean.setPassword(rs.getString("password";jBean.setSex(rs.getString("sex";jBean.setAge(rs.getInt("age";list.add(jBean;}} catch (SQLException e {// TODO Auto-generated catch blocke.printStackTrace(;}finally{try {pre.close(;con.close(;} catch (SQLException e {// TODO Auto-generated catch blocke.printStackTrace(;}}return list;}}(三)servlet1. 验证码的生成CheckCodeGet.javapackage javaee;import java.io.IOException;import java.awt.*;import java.awt.image.*;import java.util.*;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder;//生成验证码@SuppressWarnings("restriction"public class CheckCodeGet extends HttpServlet{private static final long serialVersionUID = 1L;private final int TYPE_NUMBER = 0;private final int TYPE_LETTER = 1;private final int TYPE_MULTIPLE = 2;private int width;private int height;private int count;@SuppressWarnings("unused"private int type;private String validate_code;private Random random;private Font font;private int line;public void doGet(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException{response.setHeader("Pragma","No-cache";response.setHeader("Cache-Control","no-cache";response.setDateHeader("Expires", 0;response.setContentType("image/jpeg";String reqCount = request.getParameter("count";String reqWidth = request.getParameter("width";String reqHeight = request.getParameter("height";String reqType = request.getParameter("type";if(reqCount!=null && reqCount!=""this.count = Integer.parseInt(reqCount;if(reqWidth!=null && reqWidth!=""this.width = Integer.parseInt(reqWidth;if(reqHeight!=null && reqHeight!=""this.height = Integer.parseInt(reqHeight;if(reqType!=null && reqType!=""this.type =Integer.parseInt(reqType;font = new Font("Courier New",Font.BOLD,width/count;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB;Graphics g = image.getGraphics(;g.setColor(getRandColor(200,250;g.fillRect(0, 0, width, height;g.setColor(getRandColor(160,200;for (int i=0;i{int x = random.nextInt(width;int y = random.nextInt(height;int xl = random.nextInt(12;int yl = random.nextInt(12;g.drawLine(x,y,x+xl,y+yl;}g.setFont(font;validate_code = getValidateCode(count,1;request.getSession(.setAttribute("validate_code",valida te_code;for (int i=0;i{//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成g.setColor(newColor(20+random.nextInt(110,20+random.nextInt(110,20+random .nextInt(110;int x = (int(width/count*i;int y = (int((height+font.getSize(/2-5;g.drawString(String.valueOf(validate_code.charAt(i,x,y;}g.dispose(;//ImageIO.write(image, "JPEG",response.getOutputStream(;JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(response.getOutputStream(;encoder.encode(image;}public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException{doGet(request,response;}public void init(ServletConfig config throws ServletException{super.init(config;width = 150;height = 50;count = 4;type = TYPE_NUMBER;random = new Random(;line = 200;}//private Color getRandColor(int from,int to{Random random = new Random(;if(to>255 from=255;if(to>255 to=255;int rang = Math.abs(to - from;int r=from+random.nextInt(rang;int g=from+random.nextInt(rang;int b=from+random.nextInt(rang;return new Color(r,g,b;}//取得验证码字符串private String getValidateCode(int size,int type {StringBuffer validate_code = new StringBuffer(; for(int i = 0; i < size; i++{validate_code.append(getOneChar(type;}return validate_code.toString(;}//根据验证码类型取得实际验证字符private String getOneChar(int type{String result = null;switch(type{case TYPE_NUMBER:result = String.valueOf(random.nextInt(10;break;case TYPE_LETTER:result = String.valueOf((char(random.nextInt(26+65; break;case TYPE_MULTIPLE:if(random.nextBoolean({result = String.valueOf(random.nextInt(10;}else{result = String.valueOf((char(random.nextInt(26+65; }break;default:result=null;break;}if(result==null{throw new NullPointerException("获取验证码出错";}return result;}}2. 删除用户deleteuser.javapackage javaee;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javaee.bean.SqlBean;public class deleteuser extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {response.setContentType("text/html";doPost(request,response;}public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {response.setContentType("text/html";//获取超链接传来的数据String sId = request.getParameter("id";int id =Integer.parseInt(sId;System.out.println(id;//调用模型层删除方法String sql = "delete from student where id=?";SqlBean sBean = new SqlBean(;int count =sBean.getdeleteuser(sql, id;String url="";//System.out.println(count;if(count>0{url="userlist.jsp";}else{url ="error.jsp";request.setAttribute("error", "删除";}//转发request.getRequestDispatcher(url.forward(request, response;}}3. 增加用户insertuser.javapackage javaee;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javaee.bean.SqlBean;import javaee.bean.javabean;public class insertuser extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {response.setContentType("text/html";doPost(request,response;}public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {response.setContentType("text/html";request.setCharacterEncoding("utf-8";response.setCharacterEncoding("utf-8";//获取前台页面数据String sid = request.getParameter("id";String name =request.getParameter("name";String password =request.getParameter("password";String sex =request.getParameter("sex";String sage = request.getParameter("age";int age =Integer.parseInt(sage;int id =Integer.parseInt(sid;//封装到JavaBean对象中去javabean jBean = new javabean(;jBean.setId(id;jBean.setName(name;jBean.setPassword(password;jBean.setSex(sex;jBean.setAge(age;//调用模型层String sql = "insert intostudent(id,name,password,sex,age values(?,?,?,?,?";SqlBean sBean = new SqlBean(;int count =sBean.getinsertuser(sql,jBean;@SuppressWarnings("unused"String url="";if(count>0{url="userlist.jsp";}else{url ="error.jsp";request.setAttribute("error", "";}//转发request.getRequestDispatcher("userlist.jsp".forward(req uest, response;}}4. 用户登录LoginActionsql.javapackage javaee;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@SuppressWarnings("serial"public class LoginActionsql extends HttpServlet {/*** Constructor of the object.*/String driverName=null;String url=null;String user=null;String pass=null;public LoginActionsql( {super(;}/*** Destruction of the servlet. <br>*/public void destroy( {super.destroy(; // Just puts "destroy" string in log // Put your code here}public void doGet(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {doPost(request,response;}public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {String id=request.getParameter("id";String password=request.getParameter("password"; String checkCode=request.getParameter("checkcode"; if(id!=null &&id.trim(.length(!=0&&password.trim(.length(!=0 {String sql="select * from student where id=? and password=?";Connection cn=null;boolean check=false;try{Class.forName(driverName;cn=DriverManager.getConnection(url, user, pass; PreparedStatement ps=cn.prepareStatement(sql;ps.setString(1,id;ps.setString(2,password;ResultSet rs=ps.executeQuery(;if(rs.next({System.out.println(id+password+checkCode;check=true;}rs.close(;ps.close(;}catch (Exception e{response.sendRedirect("login.jsp";return;}finally{try{cn.close(;}catch(Exception e{}}if (check{HttpSession session=request.getSession(true; session.setAttribute("name",id;session.setAttribute("password",password; response.sendRedirect("userlist.jsp"; System.out.println(id;return;}else{response.sendRedirect("login.jsp";return;}}}public void init(ServletConfig config throwsServletException {// Put your code heresuper.init(config;driverName=config.getInitParameter("driverName";url=config.getInitParameter("url";user=config.getInitParameter("user";pass=config.getInitParameter("pass";}}5、用户查询searchById.javapackage javaee;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javaee.bean.javabean;import javaee.bean.SqlBean;public class searchById extends HttpServlet {private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request,HttpServletResponse responsethrows ServletException, IOException {doPost(request,response;public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {response.setContentType("text/html";request.setCharacterEncoding("utf-8";response.setCharacterEncoding("utf-8";//获取用户IDString sid = request.getParameter("id";int id =Integer.parseInt(sid;//System.out.println(id;String sql ="select * from student where id=?"; SqlBean sBean = new SqlBean(;javabean jBean = sBean.getsearchById(sql, id;//用户IDrequest.setAttribute("id",jBean.getId(;//用户姓名request.setAttribute("name",jBean.getName(;//用户密码request.setAttribute("password",jBean.getPassword(; //用户性别String sex="";String man="";String woman="";if(jBean.getSex(!=nullsex=jBean.getSex(.trim(;if(sex.equals("男"{man ="checked";}else{woman ="checked";}}request.setAttribute("man",man;request.setAttribute("woman",woman;//用户年龄request.setAttribute("age",jBean.getAge(;//转发request.getRequestDispatcher("updateuser.jsp".forward(reque st, response;}}6、用户修改updateuser.javapackage javaee;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javaee.bean.javabean;import javaee.bean.SqlBean;public class updateuser extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException {doPost(request,response;}public void doPost(HttpServletRequest request, HttpServletResponse responsethrows ServletException, IOException { response.setContentType("text/html";request.setCharacterEncoding("utf-8";response.setCharacterEncoding("utf-8";//获得前台表单信息String sid = request.getParameter("id";int id =Integer.parseInt(sid;System.out.println(id;String name =request.getParameter("name";String password =request.getParameter("password"; String sex =request.getParameter("sex";String sage = request.getParameter("age";int age =Integer.parseInt(sage;//封装到JavaBean对象中去javabean jBean = new javabean(;jBean.setId(id;jBean.setName(name;jBean.setPassword(password;jBean.setSex(sex;jBean.setAge(age;String sql ="update student setname=?,password=?,sex=?,age=? where id=?";SqlBean sBean = new SqlBean(;int count =sBean.getupdateuser(sql,jBean;@SuppressWarnings("unused"String url="";if(count>0{url="userlist.jsp";}else{url ="error.jsp";request.setAttribute("error", "更新";}request.getRequestDispatcher("userlist.jsp".forward(request, response;}}(四)、jsp1、错误页面:error.jsp<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%><%String path = request.getContextPath(;String basePath =request.getScheme(+"://"+request.getServerName(+":"+request.getSe rverPort(+path+"/";%>DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>出错啦!!!title>head><body>对不起!您<%=request.getAttribute("error"%>失败body>html>2、登录页面:login.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>String path = request.getContextPath(;String basePath =request.getScheme(+"://"+request.getServerName(+":"+request.getSe rverPort(+path+"/";%>DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>用户登录页面title><script type="text/javascript">function reImg({var img = document.getElementById("CheckCodeGet";img.src = "CheckCodeGet?rnd=" + Math.random(;}script>head><body><FONT SIZE="5"COLOR="#006699">用户登录FONT><form action="LoginActionsql.do"method="post"><table><tr><td>用户名:td><td><input type="text"name="id"/> td>tr><td>密码:td><td><input type="password"name="password"/> td>tr><tr><td>验证码:td><td><input type="text"name="checkcode"/> td><td><img id="guestbookCaptcha"onclick="this.src='CheckCodeGet?d='+new Date("alt=""src="CheckCodeGet?"width="70"/><a style="text-decoration: none;"onclick="document.getElementById('guestbookCaptcha'.src= 'CheckCodeGet?d='+new Date(" href="#">看不清?a>td>tr><tr><td colspan="2"><center><input type="submit"value="提交">center>td>tr>table>body>html>3、用户主页面:userlist.jsp<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%><%String path = request.getContextPath(;String basePath =request.getScheme(+"://"+request.getServerName(+":"+request.getSe rverPort(+path+"/";%>DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>显示用户记录title>head><body><STYLE type="text/css">STYLE><%String name=(Stringsession.getAttribute("name";out.println(name;%><FONT SIZE="5"COLOR="#006699">恭喜您登录成功!FONT<hr/><center><font color="#006699"size=5>用户信息如下:font><hr><table border=1bgColor="#ffffff"width="500px"height="100px"> <tr><td>ID td><td>姓名td><td>密码td><td>性别td><td>年龄td><td><center>操作center> td>tr><jsp:useBean id="sBean"class="javaee.bean.SqlBean"/><jsp:useBean id="jBean"class="javaee.bean.javabean"/><%String sql ="select * from student order by id";java.util.List list =sBean.getuserlist(sql;for(java.util.Iterator it =list.iterator(;it.hasNext(;{//获取一个JavaBean对象jBean =(javaee.bean.javabeanit.next(;%><tr><td><%=jBean.getId( %>td><td><%=jBean.getName( %>td><td><%=jBean.getPassword( %>td><td><%=jBean.getSex( %>td><td><%=jBean.getAge( %>td><td><a href="insertuser.jsp">增加a><a href="deleteuser?id=<%=jBean.getId(%>">删除a><a href="searchById?id=<%=jBean.getId(%>">更新a>td>tr><% }%>table>center>body>html>4、增加用户:insertuser.jsp<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%String path = request.getContextPath(;String basePath = request.getScheme(+"://"+request.getServerName(+":"+request.getServerPort(+path+"/"%>考研复试:英语口语听力全攻略 HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" 数学专业的,或者理科物理的,他问专业术语,你很可能这个词都不认识,这怎么办呢?这里希望考生注意一点。
声明:如果引用或借鉴本书稿中的图例、解说和讲解技巧,请标明出处,以示对我的辛勤劳动的尊重!这些东西虽然谈不上创造发明,但确实也是花费了我很多时间和精力去总结、归纳出来的。
如果有人等我总结、消化后再“巧妙借鉴”,精华和核心全部拿走,然后在随便从书上找到别的知识作补充,以示区别的行为将会极大挫伤我的积极性,希望网友们从道义上对这种行为进行谴责!因涉及商业机密和出版合同,本书中的一些最富有技巧的知识和讲解手法没有提供出来,敬请谅解!————张孝祥第1题问题:将Servlet的class文件放置在classpath环境变量指向的某个目录中,该Servlet能够正常运行吗?如何让classpath目录中的Servlet能成功运行呢?请按下面的步骤进行操作后分析原因。
动手体验:Tomcat如何完成类的加载(1)将4.2.3节创建的d:\myweb\WEB-INF\classes目录中的HelloServlet.class文件移动(注意不是复制)到d:\myweb\目录中,重新启动Tomcat,在浏览器地址栏中输入http://localhost:8080/it315/demo/hello.html,浏览器将显示出找不到请求资源的响应信息。
(2)打开<tomcat的安装目录>\bin\setclasspath.bat文件,找到其中设置CLASSPATH 环境变量的语句,将d:\myweb目录增加到CLASSPA TH环境变量中,如下所示:set CLASSPATH=%JA V A_HOME%\lib\tools.jar;d:\myweb;为了保证上面设置的CLASSPATH环境变量起作用,应使用startup.bat程序重新启动Tomcat,再次访问http://localhost:8080/it315/demo/hello.html,浏览器中显示出如图4.7所示的错误信息。
图4.7错误提示类加载器找不到javax.servlet.http.HttpServlet类,这说明Servlet引擎已找到并成功加载了HelloServlet类,只是没有找到HelloServlet类中引用(继承)的HttpServlet类。
编写一个Filter ,需要()A. 继承Filter 类B. 实现Filter 接口C. 继承HttpFilter 类D.实现HttpFilter 接口自定义标签的配置文件放在__________3. ABC 有关会话跟踪技术描述正确的是()(多选)A. Cookie 是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端。
B. 关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期。
C. 在禁用Cookie时可以使用URL重写技术跟踪会话。
D. 隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示。
在J2EE中,重定向到另一个页面,以下()语句是正确的A. request . sendRedirect(“ http :svse . com . cn ”);B. request . sen dRedirect();C. response . sendRedirect(“ svse . com . cn ”);D. resp onse .se ndRedirect();EL表达式,${10 mod 3},执行结果为()A. 10 mod 3B. 1C. 3D. n ull6. C 自定义标签的作用是()A. 编写和使用方便B. 规定是这样的,如果不用,别人会说我们不专业C.可以减少jsp中的java代码,将代码与界面标签分离,简化前台幵发D. 连数据库().forward(request,response) 称之为( )A. 流转B. 转发C. 重定向D. 导航8. BCD 有关Servlet 的生命周期说法正确的有( ) ( 多选)A. Servlet 的生命周期由Servlet 实例控制。
B. init() 方法在创建完Servlet 实例后对其进行初始化,传递的参数为实现ServletContext 接口的对象。
C. service() 方法响应客户端发出的请求。
实验四 JSP与Servlet训练一、实验目的:编写JSP代码,熟悉并掌握JSP的基本语法、控制结构、表达式、脚本段、JSP指令及JSP动作;熟悉并掌握JSP的内置对象:request、response、out、session、application、exception、page的使用。
编写Servlet代码,熟悉并掌握Servlet的使用和配置。
二、实验内容:在MyEclipse环境下编写JSP代码,运用JSP的基本语法、控制结构、表达式、脚本段、JSP指令及JSP动作完成相应的功能,调试运行程序;运用JSP的内置对象:request、response、out、session、application、exception、page完成相应的功能,调试运行程序。
在MyEclipse环境下编写Servlet代码,正确配置后完成相应的功能,调试运行程序。
三、实验要求:1. 熟悉并掌握JSP的基本语法、控制结构、表达式、脚本段;2. 熟悉并掌握JSP的指令及JSP动作;3. 熟悉并掌握JSP的内置对象;4. 运用各种JSP内置对象完成规定功能;5. 熟悉并掌握Servlet的编码和配置;6. 运用Servlet技术完成规定功能;7. 写出实验报告。
四、实验学时:4学时五、实验步骤:1.进入MyEclipse环境,新建一个Web Project;2. 利用JSP技术完成注册信息的提交及验证以及显示功能,完成两个页面的设计:第一个HTML页面如图,第二个JSP页面调用JAVABEAN 接收注册信息验证后显示用户在第一个页面中的注册结果。
3. 利用MVC模型完成上述实验,第二个页面的功能由Servlet完成。
4. 调试运行程序;六、实验代码:Javabean的方法:1.acceprPace.javapackage test;public class acceptPara{String userid;String username;String userpass;String userpass2;String birthday;String degree;String local;String email;String address;String phone;String comment;public void setuserid(String value){erid=value;}public String getuserid(){return userid;}public void setusername(String value){ ername=value;}public String getusername(){return username;}public void setuserpass(String value){ erpass=value;}public String getuserpass(){return userpass;}public void setuserpass2(String value){ erpass2=value;}public String getuserpass2(){return userpass2;}public void setbirthday(String value){ this.birthday=value;}public String getbirthday(){return birthday;}public void setdegree(String value){this.degree=value;}public String getdegree(){return degree;}public void setlocal(String value){this.local=value;}public String getlocal(){return local;}public void setemail(String value){this.email=value;}public String getemail(){return email;}public void setaddress(String value){ this.address=value;}public String getaddress(){return address;}public void setphone(String value){this.phone=value;}public String getphone(){return phone;}public void setcomment(String value){ment=value;}public String getcomment(){return comment;}public void acceptPara(){}}2.register.html<script language="JavaScript">……约束代码略,与上个实验一致……</script><html><head><title>注册界面</title></head><body><h2 align="center">请注册</h2><form name="form1" action="register_confirm.jsp" method="post"onsubmit="return isValidate(form1)"><table align="center"><tr><td> 用户ID:</td><td><input type="text" name="userid">6-8位</td></tr><tr><td> 用户名:</td><td><input type="text" name="username">2-10位</td></tr><tr><td> 口令:</td><td><input type="password" name="userpass">6-8位,不能与用户名相同</td></tr><tr><td> 确认口令:</td><td><input type="password" name="userpass2"></td></tr><tr><td> 生日:</td><td><input type="text" name="birthday">格式为:1988-1-1</td> </tr><tr><td> 学历:</td><td><input type="radio" name="degree" value="1">专科<input type="radio" name="degree" value="2" checked>本科<input type="radio" name="degree" value="3">硕士研究生<input type="radio" name="degree" value="4">博士研究生<input type="radio" name="degree" value="5">其他</td></tr><tr><td> 地区:</td><td><select name="local"><option value="1">华东</option><option value="2">华南</option><option value="3">华北</option><option value="4" selected>东北</option><option value="5">东南</option><option value="6">西南</option><option value="7">西北</option><option value="8">华中</option></select></td></tr><tr><td> E-mail:</td><td><input type="text" name="email"></td></tr><tr><td> 地址:</td><td><input type="text" name="address"></td></tr><tr><td> 电话:</td><td><input type="text" name="phone">数字和连字符,例如88223322-123</td></tr><tr><td> 备注:</td><td> <textarea rows="8" name="comment" cols="40"></textarea></td> </tr><tr><td> <input type="reset" value="重置"></td><td> <input type="submit" value="提交"></td></tr></table></form></body></html>3.register_confirm.jsp<%@ page language="java" import="test.acceptPara" contentType= "text/html;charset=gb2312"%><jsp:useBean id="atest" class="test.acceptPara" scope="page"/><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>acceptPara.jsp</title></head><body><% request.setCharacterEncoding("GBK");%><jsp:setProperty name="atest" property="*"/>Value of property "userid" :<jsp:getProperty name="atest" property="userid" /><br>Value of property "username" :<jsp:getProperty name="atest" property="username"/><br>Value of property "userpass" :<jsp:getProperty name="atest" property="userpass"/><br>Value of property "userpass2" :<jsp:getProperty name="atest" property="userpass2"/><br>Value of property "birthday" :<jsp:getProperty name="atest" property="birthday"/><br>Value of property "degree" :<jsp:getProperty name="atest" property="degree"/><br>Value of property "local" :<jsp:getProperty name="atest" property="local"/><br>Value of property "email" :<jsp:getProperty name="atest" property="email"/><br>Value of property "address" :<jsp:getProperty name="atest" property="address"/><br>Value of property "phone" :<jsp:getProperty name="atest" property="phone"/><br>Value of property "comment" :<jsp:getProperty name="atest" property="comment"/><br></body></html>Servlet方法:1.TransPara.javapackage mime;import java.io.*;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TransPara extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head>");out.println("<title>接收表单数据</title>");out.println("</head>");out.println("<body>");String userid=request.getParameter("userid");out.println("用户号:"+userid+"<br>");String username=request.getParameter("username");out.println("姓名:"+username+"<br>");String Birthday=request.getParameter("birthday");out.println("生日:"+Birthday+"<br>");String[] degree=request.getParameterValues("degree");out.println("学历:");for(int i=0;i<degree.length;i++){if(degree.equals("0"))out.println("专科");if(degree.equals("1"))out.println("本科");if(degree.equals("2"))out.println("硕士研究生");if(degree.equals("3"))out.println("博士研究生");if(degree.equals("4"))out.println("其他");}out.println("<br>");String email=request.getParameter("email");out.println("email:"+email+"<br>");String Address=request.getParameter("address");out.println("地址:"+Address+"<br>");String Phone=request.getParameter("phone");out.println("电话:"+Phone+"<br>");out.println("<br>");String Comment=request.getParameter("comment");out.println(Comment+"<br>");out.println("</body>");out.println("</html>");out.flush();out.close();}}2.form.html<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><script language="JavaScript">……约束函数,同上,略……</script><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>注册界面</title></head><body><h2 align="center">请注册</h2><form name="form1" action="./TransPara" method="post"onsubmit="return isValidate(form1)"><table align="center"><tr><td> 用户ID:</td><td><input type="text" name="userid">6-8位</td></tr><tr><td> 用户名:</td><td><input type="text" name="username">2-10位</td></tr><tr><td> 口令:</td><td><input type="password" name="userpass">6-8位,不能与用户名相同</td></tr><tr><td> 确认口令:</td><td><input type="password" name="userpass2"></td></tr><tr><td> 生日:</td><td><input type="text" name="birthday">格式为:1988-1-1</td> </tr><tr><td> 学历:</td><td><input type="radio" name="degree" value="0">专科<input type="radio" name="degree" value="1" checked>本科<input type="radio" name="degree" value="2">硕士研究生<input type="radio" name="degree" value="3">博士研究生<input type="radio" name="degree" value="4">其他</td></tr><tr><td> 地区:</td><td><select name="local"><option value="1">华东</option><option value="2">华南</option><option value="3">华北</option><option value="4" selected>东北</option><option value="5">东南</option><option value="6">西南</option><option value="7">西北</option><option value="8">华中</option></select></td></tr><tr><td> E-mail:</td><td><input type="text" name="email"></td></tr><tr><td> 地址:</td><td><input type="text" name="address"></td></tr><tr><td> 电话:</td><td><input type="text" name="phone">数字和连字符,例如88223322-123</td></tr><tr><td> 备注:</td><td> <textarea rows="8" name="comment" cols="40"></textarea></td> </tr><tr><td> <input type="reset" value="重置"></td><td> <input type="submit" value="提交"></td></tr></table></form></body></html>3.web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><description>This is the description of my J2EE component</description><display-name>This is the display name of my J2EE component</display-name><servlet-name>TransPara</servlet-name><servlet-class>mime.TransPara</servlet-class></servlet><servlet-mapping><servlet-name>TransPara</servlet-name><url-pattern>/TransPara</url-pattern></servlet-mapping><welcome-file-list><welcome-file>from.html</welcome-file></welcome-file-list><login-config><auth-method>BASIC</auth-method></login-config></web-app>七、实验截图:Javabean的结果:Servlet的结果:。