实验九 Servlet应用
Servlet的应用与配置

Servlet原理javax.servletInterface Servlet是规范的接口,为了深入了解Servlet原理,要实际开发一个实现该接口的类,来作为第一个Servlet。
public void init(ServletConfig config)throws ServletException这个方法,是由容器在实例化一个Servlet实例后,确切会调用该方法一次。
通过判断是否抛出异常来确认Servlet是否被正确初始化。
public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException这个方法,是我们实现业务逻辑的方法,req和res就是由Web服务器对于请求和相应的有效封装。
没有什么神秘的,java网络编程中,ServerSocket的accept方法返回之后,会获得相应的一个Socket对象,通过该对象可以进而获得对应客户端的输入流和输出流。
在对其进行封装就进而到Request和Response对象。
传入service方法,req可以获得请求的头部信息,res.getWriter,获得一个输出,进行输出信息,作为真正响应。
public void destroy()This method is only called once all threads within the servlet's service me thod have exited or after a timeout period has passed.只有在service方法运行完,或者一个timeout后,会被调用。
After the servlet container calls this method, it will not call the service me thod again on this servlet.一旦调用它,就不会再提供服务。
实验1-servlet的使用

实验一Servlet的使用一、实验目的1.掌握Servlet的创建与配置;2.熟悉过滤器的应用范围;3.掌握创建和配置过滤器的基本步骤二、实验仪器1.需配备安装有Windows7操作系统、IE浏览器的计算机,每人一台台。
三、实验原理1.Servlet是一种服务器端的Java Web技术,可以用来生成动态的Web页面,其对Web 请求的处理能力非常强大。
Servlet实质上就是按Servlet规范编写的Java类,与Java普通程序不同的是,Servlet的运行需要Servlet容器的支持。
通常所说的Servlet就是指HttpServlet,在开发Servlet时,可以直接继承javax.servlet.http.HttpServlet。
用于处理Http请求的方法有doGet()、doPost()、service()等。
2.Servlet是javax.servlet包中HttpServlet类的子类,由服务器完成该子类的创建和初始化。
Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。
3.在标准的MVC模式中,Servlet仅作为控制器(Control)使用。
Java EE应用框架也正是遵循了MVC模式,对其而言,JSP仅作为表现层(View)技术。
Model通常由JavaBean来充当,所有业务逻辑、数据访问逻辑都在Model中实现,实际上隐藏在Model层中还有很多丰富的组件,例如DAO组件、领域对象等。
MVC的工作模式简要概述为:所有用户请求都发送给Servlet, Servlet调用Model来处理用户请求,并调用JSP来呈现处理结果;或者Servlet直接调用JSP将应用的状态数据呈现给用户。
四、实验内容1.熟悉MVC模式,利用Servlet作为控制器实现一个简单的登录验证。
2.本项目共需要3个程序文件:1)视图层:登录页面,Login.jsp, welcome.jsp2)控制层:控制器,LoginServlet.java3)模型层:DAO组件,DbDao.java五、实验步骤1.创建MYSQL数据库名为“liuyan”,并创建表“user_inf”,如下图所示,将记录加入表中。
Servlet实验任务

实验二 Servlet基础一、实验目的1、理解Servlet的作用、生命周期及相应接口所包含的方法。
2、掌握通过继承HttpServlet类来创建Servlet的方法。
二、实验类型设计型三、实验内容首先运行教材或实验指导书上的一些例子程序,然后自己编写Servlet,能够接收客户端输入的两个整数,并将这两个数相加的结果显示出来。
四、预备知识1、示例项目1打开实验室计算机上的NetBeans6.8或者MyEclipse,选择菜单的“文件”——>“新建项目…”——>“Web应用程序”,然后给项目取一个名字,一路默认下去(同时注意观察编译器每一步做出了什么设置),并注意在此过程中,在“配置servlet部署”这一步时,在“将信息添加到部署描述符(web.xml)”前面的方框打勾。
最后一步选择“完成”。
会发现在NetBeans左边的“项目”窗口中生成了所创建的项目。
右键点击项目名,选择“新建”——>“servlet…”,根据提示,一步一步创建一个servlet。
Servlet 的代码为:import java.io.*;import .*;import javax.servlet.*;import javax.servlet.http.*;public class First 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("<html>");out.println("<head>");out.println("<title>Servlet First</title>");out.println("</head>");out.println("<body>");out.println("<h1>Hello World</h1>");out.println("</body>");out.println("</html>");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);}public String getServletInfo() {return "Short description";}}打开项目中的“Web页”目录下的“WEB-INF”目录,然后打开其中的web.xml文件,观察该文件是如何配置servlet及其URL映射信息的。
Servlet实例应用

Servlet实例应用1.虽然可以用:String name=getServletConfig().getServletName()得到Servlet名称,但可以从GenericServlet直接继承getServletName方法更方便. Service就不用象doPost激活了public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html");PrintWriter out=response.getWriter(); out.print( this.getServletName( ) );Enumeration e=this.getInitParameterNames();//得到多个参数玫举数组while(e.hasMoreElements()){ String key=(String)e.nextElement();String value=getInitParameter(key); out.print(key+"="+value); } ServletContext context=this.getServletContext();//也可从GenericServlet中直接得到String path=context.getRealPath("/"); out.print(path); 得到:C:\tomcat\webapps\test\2. 用ServletContext得到初始化参数:(从GenericServlet中直接得到)public class Context extends HttpServlet {public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); Enumeration e=getServletContext().getInitParameterNames();while(e.hasMoreElements()){ String key=(String)e.nextElement(); String value=getServletContext().getInitParameter(key);out.print(key+"="+value);}}} ServletContext在web.xml中的配置: <servlet> <servlet-name>Context</servlet-name><servlet-class>test.Context</servlet-class></servlet>不同于<init-param>在Servlet内部配<context-param><param-name>company</param-name><param-value>witbridge</param-value></context-param>3.使用输入流访问资源文件:public class FileAccess extends HttpServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {PrintWriter out=response.getWriter(); FileInputStream fis=new FileInputStream("it315.properties");//文件必和tomcat启动程序同级别目录: user=root,否则全路径:c:\\test\\it315.propertiesProperties props=new Properties(); props.load(fis);//Properties保存在流中或从流中加载, load从输入流中读取属性列表,getPXX返回Stringout.print(props.getProperty("user")); fis.close();}} //用指定键在属性列表中搜索属性4.使用ServletContext接口访问资源文件:public class Resource extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter();URL urlIt315=this.getServletContext().getResource("/it315.properties"); InputStream ips=this.getServletContext().getResourceAsStream("/it315.properties"); out.print(urlIt315.toString());Properties props=new Properties();props.load(ips); out.print(props.getProperty("dataBase")); } }//好处:路径与调试环境无关,只要/ setHeader(ng.String name, ng.String value)5.HttpServletResponse的应用:响应消息头:如setContentType(“text/html;charset=”);a.SetHeader(自动刷新,URL覆盖)public class Refresh extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //response.setHeader("Refresh", "2"); response.setHeader("Refresh", 1;URL=http://localhost:8080/ "); } }b.禁止浏览器缓存显示动态图片:public class Cache extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html ");response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache"); //防止不同浏览器支持不同响应头PrintWriter out=response.getWriter(); out.print(Math.random()); }} response.setBufferSize(0);int len=response.getBufferSize( );out.print(len);//81926.RequestDispatcher(共享数据和URL不变)和response.SendRidirect:a.Include:被包含的Servlet程序不能改变响应消息的状态码和响应头,如果他里面存在这样的语句执行结果将被忽略:public class Included extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=GB2312");//被包含执行时将被忽略PrintWriter out=response.getWriter(); out.print("中国"+"<br>");out.print("URL"+request.getRequestURI()+"<br>");///test/servlet/Include根目录下out.print("QueryString:"+request.getQueryString()+"<br>");//为null,得到?后面语句out.print("Param p1:"+request.getParameter("p1")+"<br>");}} //可以得到参数的测试:public class Include extends HttpServlet {protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=GB2312");PrintWriter out=response.getWriter(); String china="中国"; RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/servlet/Included?p1="+china); rd.include(request, response);} }//从Config中继承。
Servlet的应用

Servlet的应用一、Servlet的应用1. 一个Servlet类应该继承HttpServlet并且覆盖doGet或doPost方法,这取决于数据的发送方式是get 还是post。
若要在一个Servlet中同时处理get 和post请求,并且对每个请求的处理动作相同,可以简单地在doGet方法中调用doPost方法,反之亦然。
doGet和doPost方法都有两个参数:HttpServletRequest 和HttpServletResponse。
可以通过HttpServletRequest类提供的方法获得引入的信息,比如表单数据、客户主机名等;HttpServletResponse类提供输出信息的能力,比如,通过HttpServletResponse得到一个PrintWriter向客户发送文档内容。
2. doGet、doPost及其它doXxx方法是Servlet的主体,大部分时间都只用关心get和post 请求,所以只需覆盖doGet、doPost方法。
如果需要,也可以为处理delete请求而覆盖doDelete 方法;为处理put请求而覆盖doPut方法;为处理options请求而覆盖doOptions方法;为处理trace请求而覆盖doTrace方法。
注意,没有doHead方法,因为系统自动用状态列和header 设置来回复head 请求。
3. 一个简单的Servlet最主要的功能就是用println语句输出一个预期的页面。
因为doGet 和doPost会抛出两个异常,因此要引处相关的类:java.io——因为要用到PrintWriter等javax. servlet——因为要用到HttpServlet等javax. servlet.http——因为要用到HttpServletRequest 和HttpServletResponse等二、Servlet的编译、配置和调用1. 环境变量CLASSPA TH要包含了标准的Servlet类,比如:.;%JA V A_HOME%\lib\dt.jar;%JA V A_HOME%\lib\tools.jar;E:\Program Files\Apache SoftwareFoundation\T omcat 6.0\lib\servlet-api.jar2. 用“javac”命令编译Servlet,将生成的Servlet类(即.class 文件)放到正确路径,比如:ROOT\WEB-INF\classes3. 若生成的Servlet类(即.class文件)放在ROOT\WEB-INF\classes,则必须使用ROOT\WEB-INF目录下的web.xml文件进行注册。
servlet 案例

servlet 案例
servlet案例指的是使用JavaServlet技术实现的具体案例。
Servlet是一种在Web应用程序中动态生成内容的Java类,可以用于处理客户端请求、生成动态网页、连接数据库等功能。
下面是一些常见的 servlet 案例:
1. 登录验证:用户在登录页面输入账号密码,点击“登录”按钮后,servlet 根据输入的信息查询数据库,验证用户身份是否合法,并将结果返回给客户端。
2. 注册新用户:用户在注册页面输入个人信息,包括用户名、密码、邮箱等,servlet 将这些信息保存到数据库中,并返回注册成功的提示。
3. 文件上传下载:用户在网页中选择要上传的文件,servlet 将文件存储到服务器上的指定目录中,并返回上传成功的提示。
用户也可以通过 servlet 下载服务器上的文件。
4. 数据库操作:servlet 可以连接数据库,实现增删改查等操作,例如查询订单信息、添加商品信息等。
5. 发送邮件:servlet 可以使用 JavaMail 技术发送邮件,例如在网站上提供联系我们的功能,当用户填写了表单后,servlet 将表单信息发送到指定的邮箱。
这些都是常见的 servlet 案例,它们广泛应用于 Web 应用程序中,为用户提供丰富的功能和服务。
- 1 -。
servlet作用及配置

servlet作用及配置servlet作用及配置收藏用servlet生成表现层页面显然是很麻烦的,因为都要用servlet的输出流来输出.如上out.println("<html><body>"+kk+"</body></ html><br>");servlet做控制层.jsp做表现层,jsp编译后其实也是一个servlet.它其实充当了servlet做为表现层的工作. servlet,是运行在服务器端的程序,用于处理及响应客户端的请求.servlet应该是个中间的部分,对前面和后面部分起的交互,所以,很重要.而且web.xml的配置都要经过这里,所以好好掌握.简单配置view plaincopy to clipboardprint?<servlet><servlet-name> servlet名字</servlet-name><servlet-class> 包名.类名</servlet-class></servlet><servlet-mapping><servlet-name> servlet名字</servlet-name><url-pattern> 由servlet处理的路径</url-pattern></servlet-mapping><servlet><servlet-name> servlet名字</servlet-name><servlet-class> 包名.类名</servlet-class></servlet><servlet-mapping><servlet-name> servlet名字</servlet-name><url-pattern> 由servlet处理的路径</url-pattern></servlet-mapping>把这段xml放在你的WEB-INF下面的web.xml里就行了~~当然还有其它一些别的东西`~~但是这是应用一个servlet基本的配置~~view plaincopy to clipboardprint?<servlet><servlet-name>Contorller.wc</servlet-name>// 这里指定servlet的名称,这个名称随你喜欢,只要不重复就行<servlet-class>web.Controller.Controller</servlet-cl ass>//这里servlet类的包路径和名称,注意大小写</servlet>//下面这两行配置的作用就是告诉web容器,在遇到<url-pattern>中的路径请求时就交给名为Contorller.wc 的servlet来处理。
Servlet 实验报告

软件学院设计性实验报告一、实验目的1.掌握Servlet应用,熟悉web开发的MVC模式。
2.了解servlet工作的流程,servlet的作用。
3.掌握servlet的方法init(),destory(),doget(),dopost();二、实验仪器或设备1.计算机一台2.MyEclipse软件三、总体设计(设计原理、设计方案及流程等)A:设计原理:1.servlet相当于MVC模式中的C控制器。
2.作为服务器或监听程序并响应客户请求。
3.后台业务逻辑处理,对后台数据的操作、对组件模型的操作。
4.servlet有专有的方法init(),destory(),doget(),dopost();B:设计方案及流程:设计一个登陆页面,用户提交后,将数据提交给action,Servlet来控制处理,判断用户名、密码是否正确,根据不同的结果返回不同的信息。
再进行部署测试,运行。
四、实验步骤(包括主要步骤、代码分析等)1.创建一个web项目命名为myproject。
2.创建登陆页面index.jsp代码如下:注:由于css是写在页面里面的,此处省略不写,css代码见电子稿。
<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%><%String errormessage=(String)request.getAttribute("errormessage");if(errormessage==null){errormessage= "";}%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+pa th+"/";%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>Insert title here</title><script language="javascript">function sub(){// alert('欢迎使用网新商业银行');document.mainframe.submit();//window.location.href="mainframe.jsp";}</script></head><body class="main"><form name="mainframe"action="<%=basePath%>LoginServlet"method="post"><div class="middel"><div class="login"><div class="login_up"><div class="logo_top"></div><div class="logo_right"></div></div><div class="login_down"><div class="login_left"><table cellpadding="0"cellspacing="0"height="149px"width="258px"> <tr height="30px"><td width="158"><div align="right">机构编码:</div></td><td width="100"><input type="text"name="orgno"/></td></tr><tr><td><div align="right">用户编号:</div></td><td><input type="text"name="userid"/></td></tr><tr><td width="158"><div align="right">密码:</div></td><td><input type="text"name="psw"/></td></tr><tr height="10px"><td colspan="2"><divalign="center"><%=errormessage %></div></td></tr><tr height="20px"><td colspan="2"><divalign="right">*************************</div></td></tr></table></div><div class="lofin_right2"><a href="javascript:sub()"><img src="<%=basePath%>img/submit.gif" width="71"height="24"border="0"style="margin-left:25px; margin-top:35px;"/></a><br/><a href=""><img src="<%=basePath%>img/quit.gif"width="71"height="24"border="0"style="margin-top:15px; margin-left:25px;"/></a> </div></div></div></div></form></body></html>3.创建action命名为LoginAction,file-new-servlet代码如下:package com.insigma.myproject.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.insigma.myproject.dao.LoginDao;public class LoginServlet 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 {response.setContentType("text/html");String orgno=request.getParameter("orgno");String userid=request.getParameter("userid");String passwd=request.getParameter("passwd");//LoginDao logindao=new LoginDao();//boolean isok =logindao.isLogin(userid, orgno, passwd);if (orgno.equals("1")&&userid.equals("1")&&passwd.equals("1")){System.out.println("登陆成功了");//response.sendRedirect("../mainframe.jsp");request.getRequestDispatcher("/mainframe.jsp").forward(request, response);}else {System.out.println("登陆失败了");//response.sendRedirect("../index.jsp");request.setAttribute("errormessage","用户名或密码失效");request.getRequestDispatcher("/index.jsp").forward(request, response);}}}4.创建mainframe.jsp页面,如果用户名、密码正确则跳转到此页面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九 Servlet应用
1.实验目标
1.掌握Servlet的编写与配置
2.理解Servlet的生命周期
3.理解Servlet与JSP的区别
2.实验内容与要求
1.主要通过实践掌握对servlet的使用、编写
2.创建一个简单的servlet程序并在tomcat中进行配置
3.创建一个可以接收客户端提交参数,处理后返回给客户端的servlet程序。
4.使用request.getParameterValues(“”)获取复选框数据,实现用户注册功能
3.实验步骤
1. 实现一个简单的HelloServlet,要求在IE中显示“Hello XXX”字符串。
1)通过继承HttpServlet类创建自己的servlet类
2)在servlet类的doGet()方法中输出自己的信息
3)将生成的HelloServlet.java类编译成HelloServlet.class类,注意编译的时候要用到servlet-api.jar文件。
2.创建和部署Servlet
1)在Tomcat\webapps\目录下创建自己的项目名称myExample
2)在Tomcat\webapps\myExample目录下创建WEB-INF目录,并在该目录下创建一个classes目录,将编译后的HelloServlet.class文件拷贝到这里。
3)在Tomcat\webapps\myExample目录下创建WEB-INF目录并创建一个web.xml文件。
内容为
<servlet-name>HelloServlet</servlet-name>是我们自己定义的servlet-name,<servlet-class>指定HelloServlet类(如果有报名要包含包名)
<url-pattern>中指定的是我们在IE中所用的地址。
3.启动tomcat,测试运行
输入:http://localhost:8080\myExample\HelloServlet
2.编写一个处理登录请求的Servlet
1.编写Servlet,并接收从http中传递过来的参数
说明:
1、response.setContentType("text/html;charset=GB2312");
和request.setCharacterEncoding("GB2312");两个方法主要是设置从客户端接收的字符编码和从服务器端返回的信息的编码,以防止中文出现乱码的的情况。
2、通过request.getParameter(" ") 方法分别得到从客户端传递过来的name和
password。
3、最后用out.println()方法输出显示给客户的信息。
4、编译LoginServlet.java,注意编译的时候使用到servlet-api.jar文件,将编译生成
的LoginServlet.class 文件拷贝到tomcat\webapps\myproject\WEB-INF\classes目录
下。
2.在web.xml文件中配置Servlet
3.编写登录页面login.jsp
说明:
1、此处name="Login" 中的Login对应到后面web.xml文件中设置的servlet-name;action="/myproject/login" 中的/myproject为该项目的目录名myproject ,login为LoginServlet在web.xml文件中设置的url-pattern;
2、该页面的主要目的是提交输入的用户名和密码,密码用了type="password"的类型,输入字符将以*代替所有的字符。
4.部署运行
访问login.jsp运行。