实验Servlet容器模型
- 格式:docx
- 大小:58.73 KB
- 文档页数:10
实验五Servlet实验实验目的:1.熟悉Servlet程序运行机制2.熟练掌握Servlet中进行页面重定向3.熟练掌握session的应用4.了解Servlet在项目开发中所应用的位置实验内容:一.Servlet生成页面内容按下列步骤完成简单Web应用项目。
1.一个最简单的Servlet程序新建一个项目,Dydamic Web Project类型,在该项目中新建一个Servlet,命名为WelcomeServlet 在doGet方法里面编写代码示例如下:protected void doGet(HttpServletRequest request, HttpServletResponse response) t hrows ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out=response.getWriter();out.println("<html><head><title>");out.println("欢迎页面");out.println("</title></head><body>");out.println("我们欢迎你!");out.println("</body></html>");out.close();}在Web.xml文件中加入如下代码(如已生成,可对照查看):<servlet><servlet-name>WelcomeServlet</servlet-name><servlet-class>user.web.WelcomeServlet</servlet-class></servlet><servlet-mapping><servlet-name>WelcomeServlet</servlet-name><url-pattern>/WelcomeServlet</url-pattern></servlet-mapping>在eclipse中运行此Servlet(演示效果如下:)图1 运行效果示例2.关于Servlet的url配置将上述Servlet在Web.xml中的配置代码改为如下:<servlet><servlet-name>WelcomeServlet</servlet-name><servlet-class>user.web.WelcomeServlet</servlet-class></servlet><servlet-mapping><servlet-name>WelcomeServlet</servlet-name><url-pattern>/test/welcome</url-pattern></servlet-mapping>修改完毕后,运行此Servlet程序,应能得到如图1的页面显示效果。
实验三Servlet编程20085154 杨阳一、实验内容(1)架设服务器端运行环境。
Servlet只能运行在Servlet容器上,Servlet容器负责处理客户请求,并把请求传递给servlet,同时把结果返回给客户。
选用了Tomcat4.0作为服务器。
安装Tomcat4.0之后,具体步骤为:→JCreator→Configure →Options→JDK Profiles→JDK version 1.6.0_07→add Archive,之后找到C:\Program Files\Apache Tomcat 4.0\common\lib,选中所用jar文件添加。
之后就可以编写代码并进行编译处理了。
如果没有上面的操作,一些在Servlet中用到的包、方法(如javax.servlet)无法被编译,会显示出许多错误。
程序编译没有错误后,复制生成的同名class文件放在C:\Program Files\Apache Tomcat 4.0\classes中,并启动Tomcat,在浏览器中输入http://localhost:8080/servlet/xxxxxxx,其中“xxxxxx”为具体文件名,将会生成客户端网页。
(2)编程思想:A、HelloWorldServlet.java导入javax.servlet包和javax.servlet.http包,因为其提供了servlet编程相关的类和接口。
然后程序涉及输入输出,导入java.io包。
所有的servlet都必须使用Servlet接口,该接口采用了生命周期的方法进行管理。
在这个程序里,使用了HttpServlet接口,实现了其接口定义的init()、service()、destroy()方法:public void init(ServletConfig config)throws ServletException{},这个方法返回实现ServletConfig接口的对象的引用。
Servlet上机实验报告班级:软件 1 班学号:20姓名:张波时间:2015.一、实验目的1.掌握Servlet来访问数据库。
2.了解servlet工作的流程,servlet的作用。
3.掌握servlet的方法init(),destory(),doGet(),doPost();二、实验环境+ Eclipse + MySQL数据库三、实验步骤1.创建一个动态网页的项目,名字为:Employeer,创建包,在包下新建Servlet,名为,里面代码实现和MySQL数据库的连接,并将数据库的内容以表格的形式显示到页面。
并将用于连接数据库的驱动jar包添加到JavaPath中。
2.配置,匹配访问页面的URL。
3.创建数据库Employee,在里面新建表emp,并在表中添加字段ename(雇员姓名),job(职位),sal(工资),hiredate(入职时间),并插入若干条数据。
添加的额数据如下:四、源代码;import class ShowEmployeeList extends HttpServlet {private static final long serialVersionUID = 1L;private Connection cn = null;@Overridepublic void init(ServletConfig config) throws ServletException { ();String driver = ("driver");String url = ("url");String user = ("user");String password = ("password");try {(driver);cn = (url, user, password);} catch (Exception e) {"Init error:" + ());}}public void destroy() {();try {if (cn != null && (!())) {();cn = null;}} catch (Exception e) {"Destroy Error:" + ());}}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {("text/html");("GBK");PrintWriter out = ();("<HTML>");(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");(" <BODY>");try {String sql = "select ename,job,sal,hiredate from emp";PreparedStatement ps = (sql);ResultSet rs = ();("<h1>员工列表</h1>");("<table border='1' cellspacing='0'>");("<tr>");("<td>姓名</td><td>职位</td><td>工资</td><td>加入公司日期</td>");("</tr>");while ()) {("<tr>");("<td>" + ("ENAME") + "</td>");("<td>" + ("JOB") + "</td>");("<td>" + ("SAL") + "</td>");("<td>" + ("HIREDATE") + "</td>");("</tr>");}();();("</table>");} catch (Exception e) {("<h2>处理请求发生错误:"+ () + "</h2>");}("</BODY>");("</HTML>");();();}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}version="" encoding="UTF-8"><!DOCTYPE web-appPUBLIC "-/DTD Web Application /EN"""><web-app><servlet><servlet-name>ShowEmployeeList</servlet-name><servlet-class> <init-param><param-name>driver</param-name><param-value> </init-param><init-param><param-name>url</param-name><param-value>jdbc: </init-param><init-param><param-name>user</param-name><param-value>root</param-value></init-param><init-param><param-name>password</param-name><param-value>930515</param-value></init-param></servlet><servlet-mapping><servlet-name>ShowEmployeeList</servlet-name><url-pattern>/ShowEmployeeList</url-pattern></servlet-mapping></web-app>3.执行效果五、Java反射机制什么是反射机制反射机制是如何实现的Java反射是Java被视为动态(或准动态)语言的一个关键性质。
servlet实验报告Servlet 实验报告一、实验目的本次实验旨在深入了解和掌握 Servlet 的基本概念、工作原理及开发方法。
通过实际编写和运行 Servlet 程序,熟悉 Servlet 的生命周期,掌握如何处理 HTTP 请求和响应,以及如何与 Web 页面进行交互,从而提高对 Java Web 开发的理解和实践能力。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java EE Developers3、服务器:Apache Tomcat 904、 JDK 版本:JDK 18三、实验内容(一)简单的 Servlet 程序编写1、创建一个名为`HelloServlet` 的 Java 类,继承自`javaxservlethttpHttpServlet` 类。
2、重写`doGet` 和`doPost` 方法,在方法中实现输出一段简单的问候语到客户端浏览器。
```javaimport javaioIOException;import javaioPrintWriter;import javaxservletServletException;import javaxservlethttpHttpServlet;import javaxservlethttpHttpServletRequest;import javaxservlethttpHttpServletResponse;public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {responsesetContentType("text/html");PrintWriter out = responsegetWriter();outprintln("<html><body>");outprintln("<h2>Hello, Servlet GET Method!</h2>");outprintln("</body></html>");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {responsesetContentType("text/html");PrintWriter out = responsegetWriter();outprintln("<html><body>");outprintln("<h2>Hello, Servlet POST Method!</h2>");outprintln("</body></html>");}}```(二)Servlet 配置1、在`webxml` 文件中配置`HelloServlet` ,指定 Servlet 的名称、类路径和访问路径。
实验三Servlet编程一、目的通过servlet程序的编写、调试,使学生掌握servlet编程的思路,掌握servlet编程涉及的类、接口,促进学生对概念的理解,培养动手能力。
二、基本要求学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能。
完成实验后,需要按时提交实验报告。
三、实验内容(1)架设服务器端运行环境。
(2)编写、调试servlet小应用程序。
(3)在servlet中加入简单的网页标记,使得servlet能够向客户端的浏览器中发送数据。
(4)使用servlet访问数据库。
(5)实验代码及结果间附录四、实验方法与实验步骤(1)熟悉servlet编程所用的类及接口,掌握服务器端运行环境的架设方法,着重掌握Tomcat的使用方法。
(2)编写简单的servlet,在程序中加入简单的html标记,用于向客户端的浏览器中发送数据。
(3)编译servlet源程序,修改JDK或IDE提示的错误,直到编译源程序时无错误出现。
(4)运行servlet。
将编译好的ConDB.class文件放在Tomcat4.0安装目录下的webapps\examples\WEB-INF\classes目录下(或放在Tomcat4.0安装目录下的classes目录下),然后启动服务器,在浏览器的地址栏中输入http://127.0.0.1:8080/examples/servlet/ ConDB,即可观察servlet的运行结果。
如果不能正常运行,根据提示的错误修改源程序,直到能够显示正确的结果。
(5)利用第二章所学的JDBC技术,使用servlet访问数据库,将访问数据库的结果显示在客户端的浏览器中。
五、设备或工具使用说明软件要求:Windows操作系统,JDK 1.4或以上版本,JCREATOR或记事本编辑器,Access数据库,Tomcat服务器,浏览器。
软件具体用法参见课堂教学。
六、注意事项在编译之前要将Tomcat4.0安装目录下的common\lib\servlet.jar加入类路径classpath中,如果使用IDE编译servlet,可以修改IDE的Option。
实验4 Servlet容器模型一、实验目的1. 掌握Web应用程序的DD文件的配置方法和作用;2. 掌握如何通过ServletConfig获取Servlet的初始化参数;3. 掌握ServletContext的概念,如何获得ServletContext对象;4. 掌握如何通过RequestDispatcher转发请求。
二、实验原理Web应用程序有严格定义的目录结构,它需要一个称为部署描述文件的文件来配置。
对应用程序的每个Servlet,可以在中定义若干个初始化参数,然后通过ServletConfig对象获取这些参数。
ServletContext对象表示该应用程序的环境,通过该对象可以获得应用程序范围的初始化参数、容器版本信息、资源的URL、在其中存放共享数据以及登录日志等。
三、实验内容与步骤(一)名为bookstore的Web应用程序的目录结构在Tomcat的webapps目录下,项目目录结构如下所示。
|- bookstore|- html (包含所有的HTML文件)|- jsp (包含所有的JSP文件)|- images (包含所有的GIF、JPEG和BMP图象文件)|- (默认的HTML文件)|- WEB-INF|-classes├ lib├图 bookstore应用程序的目录结构这样就建立了一个名为bookstore的Web应用程序,本实验后面的题目都在该应用程序下面完成。
(二)使用ServletConfig检索Servlet的初始化参数【步骤1】编写ConfigDemoServlet程序,内容如下:package .*;import .*;import .*;import class ConfigDemoServlet extends HttpServlet{String servletName=null;ServletConfig config=null;String email=null;String telephone=null;public void init() {config = getServletConfig();servletName = ();email = ("email");telephone = ("telephone");}public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{("text/html;charset=gb2312");PrintWriter out = ();("<html><body>");("Servlet名称:"+servletName+"<br>");("Email地址:"+email+"<br>");("电话:"+telephone);("</body></html>");}}【步骤2】修改文件,在其中添加下面Servlet定义和初始化参数定义<servlet><servlet-name>configDemoServlet</servlet-name><servlet-class><init-param><param-name>email</param-name></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>/</url-pattern></servlet-mapping>【步骤3】在浏览器的地址栏中输入下面URL访问该Servlet:程序运行结果如下图所示:图 ConfigDemoServlet程序的运行结果(三)ServletContext的使用修改上面程序,将email地址和电话使用ServletContext初始化参数传递给ConfigDemoServlet。
使用ServletContext对象将email地址和电话信息写入日志文件中,并查看日志文件。
(五)下面是一个Servlet,它可以获得有关服务器的信息。
package .*;import .*;import .*;public class ServerInfo extends GenericServlet {public void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {("text/html;charset=GB2312");PrintWriter out = ();ServletContext sc = getServletContext();("<html>");("<body>");("<head>");("<title>获取服务器端信息</title>");("</head>");("<body>");("<h2>服务器端信息:</h2>");("<table width=\"500\" border=\"1\">");("<tr>");("<td width=\"175\">站点名</td>");("<td width=\"325\">" + () + "</td>");("</tr>");("<tr>");("<td>端口号</td>");("<td>" + () + "</td>");("</tr>");("<tr>");("<td>服务器类型</td>");("<td>" + () + "</td>");("</tr>");("<tr>");("<td>支持Servlet版本</td>");("<td>"+()+"."+()+"</td>");("</tr>");("<tr>");("<td>服务器属性</td>");("<td>");如何通过ServletConfig获得Servlet参数答:通过ServletConfig接口中的方法获取参数,通过getServletName()获取Servlet的实例名,通过getInitParameter(“name”)获取name的初始化参数。
2. 如何获得ServletContext对象,如何通过该对象获得上下文参数答:Servlet容器在初始化Servlet时向其传入一个ServletConfig 对象,通过该对象的getServletContext()方法得到ServletContext对象,从而获得上下文参数。
3. 如何使用ServletContext共享数据答:首先将数据作为属性通过setAttribute("name",name)方法存入ServletContext对象中,然后如果在其他地方使用,则需要从ServletContext对象中通过getAttribute("name")方法取出。
五、实验总结本次实验主要是使我们掌握Web应用程序的DD文件的配置方法和作用,以及如何通过ServletConfig获取Servlet的初始化参数,了解ServletContext的概念,懂得如何获得ServletContext对象,进而掌握如何通过RequestDispatcher转发请求。
相信通过本次实验,我们对这方面的知识能了解得更加深刻,对以后的学习也会有所帮助。
六、附录代码【步骤1】<!DOCTYPE html><html><head><title></title><meta http-equiv="Content-Type"content="text/html;charset=UTF-8"></head><body><form action="FirstServlet" method="post">学号:<input type="text" name="id"><br>姓名:<input type="text" name="name"><br> <input type="submit" value="提交" ><input type="reset" value="重置" ></form></body></html>【步骤2】Student类package class Student {private String sno;private String name;public Student(String sno, String name) { = sno;= name;}public String getSno() {return sno;}public void setSno(String sno) {= sno;}public String getName() {return name;}public void setName(String name) {= name;}}【步骤3】FirstServletpackage class FirstServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {("UTF-8");String name = ("name");name = new String("ISO-8859-1"),"UTF-8");String id = ("id");Student s=new Student(id,name);ServletContext sc=();("s", s);RequestDispatcher rd=("/SecondServlet");(request, response);}}【步骤4】SecondServletpackage class SecondServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletContext sc=();Student st=(Student)("s");("UTF-8");("text/html;charset= UTF-8");String name = ();name = new String("ISO-8859-1"),"UTF-8");String id = ();PrintWriter pw = ();("<html>");("<head>");("</head>");("<body>");("<h3>学号:"+id+"</h3><p>");("<h3>姓名:"+name+"</h3><p>");("<a href=\"/test2/\">返回</a>");("</body>");("</html>");}}。