jsp+servlet实例
- 格式:doc
- 大小:19.50 KB
- 文档页数:3
基于Servlet、JSP的学⽣管理系统(附完整源码)起因最近重温servlet,想到了⼤学时期⽤同⼀个“学⽣管理系统”⽔了⼏门课的课程设计,不免感慨万千。
周末简单的写了个界⾯,建了⼏张表,做了⼀个⼩系统(试图找⼀找当年划⽔的感觉,可惜没找到)。
写的⽐较简单,不过做个普通的课程设计应该够了,需要的可以⾃取。
源码地址界⾯截图主界⾯管理员界⾯学⽣管理(管理员视⾓)添加系统⽤户(管理员视⾓)学⽣主页学⽣个⼈信息⽬录结构运⾏环境tomcat9jdk1.8其他依赖jar包见WEB-INF下⾯的lib⽂件夹。
涉及技术:Servlet、JSP、BootStrap、Jquery(较少)主要功能系统有两个⾓⾊,管理员和学⽣。
做的⽐较简单,没有建额外的⾓⾊表、权限表,仅仅⽤了⼀个字段区分。
管理员可以管理学⽣信息、教师信息、可以添加系统⽤户,录⼊成绩,具有增删改查的⼀切权限。
学⽣只能查看⾃⼰的分数,个⼈档案等。
代码分析⾸页数据统计系统运⾏时常、当前在线⼈数,这两个功能⽤到了servlet的组件,监听器。
通过继承ServletContextListener, HttpSessionListener, HttpSessionAttributeListener等接⼝,可以完成对servlet上下⽂、session的创建销毁等关键节点的监听。
在线⼈数,必然是登录成功的⼈数。
⽽session是有⼈访问页⾯就会创建,所以我们不能根据session的创建和销毁来统计在线⼈数。
在登陆成功后,会在session⾥添加⼀个变量,我们可以监听这⼀⾏为。
当设置session变量的时候,在线⼈数+1移除session变量的时候,在线⼈数-1。
当然这种做法还是有问题的,⽐如直接关闭浏览器,不点注销,数据统计就会失效,这⾥不做深⼊探究。
再来说说系统运⾏时长,我的思路是servlet上下⽂创建的时候,记录下那个时刻的时间戳。
后⾯⽤到的时候,直接⽤当前的时间戳减去保存的时间戳,就可以计算出相隔的毫秒数,也就可以得到天数。
Servlet与JSP的模型在前面的章节中,已经介绍过JSP与JavaBean之间的关系,也就是JSP和JavaBean模型结构。
它们实现了三层(MVC模型)中的视图和业务逻辑之间的功能,即将显示与业务处理分开。
而真正要实现三层结构模式,还需要通过Servlet技术。
如图6-1所示为JSP、JavaBean和Servlet模型的体系结构。
客户端应用服务器图6-1 JSP、JavaBean和Servlet模型它是一种采用基于模型视图控制器(Model和View和Controller)的设计模型,即MVC模型。
该模型将JSP程序的功能分为Model(模型)层、View(视图)层和Controller(控制器层)3个层次。
●Model层主要用于实现业务逻辑,也是Web应用程序功能的核心层,主要负责存储与应用程序相关的数据。
该层的功能主要由JavaBean来实现。
●View层用于与用户交互的界面,即当用户访问网站时,可以看到的网页界面。
该层的功能主要由JSP程序负责完成。
●Controller层主要负责Model和View层之间的控制关系,由Servlet技术来完成该功能。
JSP作为View层,负责生成交互后返回的界面。
而Servlet作为Controller层,负责处理HTTP请求,包括:●对输入数据的检查和转换。
●通过JavaBean访问数据库。
●初始化JSP页面中要用到的JavaBean或对象。
●根据处理中不同的分支和结果,判断重定向JSP页面等。
在上述模型中,当用户请求时,则被发送给作为控制器的Servlet。
Servlet接收请求,并根据请求信息将它们分发给相应的JSP页面来响应;同时Servlet还根据JSP的需求生成相应的JavaBean对象并传输给JSP。
JSP通过直接调用方法或利用UseBean的自定义标签,得到JavaBean中的数据。
这样,通过JSP、JavaBean和Servlet等相互合作,真正实现了表示层、事务逻辑层和数据的分离。
Jsp和Servlet关系为什么会出现Jsp?其实对于服务器来说它只认识Servlet,我们完全可以在Servlet⽤resp.getWriter().write("");画出⽹页的界⾯,但是仅仅⼀个很简单的界⾯就要重复的书写resp.getWriter().write(""),并且这还没有加上js、css以及jquery。
但是我们在Servlet写的是java代码可以有逻辑的判断,但是在html、css中⽆法加⼊逻辑导致页⾯是静态的。
为了解决这⼀问题出现了jsp,在jsp中可以书写Java代码、js代码、html代码等。
我们都知道浏览器发送请求到服务器,服务器通过解析其中Servlet的别名找到对应的Servlet并执⾏其中的service⽅法做出处理和响应,那么对于服务器来说它只认识Servlet,那么我们编辑的Jsp到底是如何被服务器识别的?实际上服务器还是将.jsp当作Servlet的别名在你局部配置下的web.xml找有没有对应的Servlet,如果没有找到对应的Servlet就去Tomcat的公共配置下的web.xml(Tomcat安装⽬录conf下的web.xml)找对应的Servlet。
会找到如下内容:org.apache.jasper.servlet.JspServlet将对应的jsp⽂件转为Servlet。
那么转的Servlet在什么地⽅呢?打开Tomcat下的work⽂件夹⼀直点到:找你正在运⾏的项⽬的jsp测试的jsp:<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!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=ISO-8859-1"><title>Insert title here</title></head><body>666</body></html> 被编译好的Java⽂件:/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/8.5.46* Generated at: 2019-10-16 09:05:10 UTC* Note: The last modified time of this file was set to* the last modified time of the source file after* generation to assist with modification tracking.*/package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<ng.String,ng.Long> _jspx_dependants;private static final java.util.Set<ng.String> _jspx_imports_packages;private static final java.util.Set<ng.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<ng.String,ng.Long> getDependants() {return _jspx_dependants;}public java.util.Set<ng.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<ng.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final ng.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request. response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final ng.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html; charset=ISO-8859-1");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\r\n");out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"/TR/html4/loose.dtd\">\r\n");out.write("<html>\r\n");out.write("<head>\r\n");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n");out.write("<title>Insert title here</title>\r\n");out.write("</head>\r\n");out.write("<body>\r\n");out.write("666\r\n");out.write("</body>\r\n");out.write("</html>");} catch (ng.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}}}但是我们发现这个类并没有继承HttpServlet⽽是继承了org.apache.jasper.runtime.HttpJspBase并且⾥⾯也没有service⽅法⽽是_jspservice⽅法。
jsp的运行原理
JSP(Java Server Pages)是一种用于动态生成网页的技术,其运行原理如下:
1. 客户端(浏览器)发送一个HTTP请求到服务器,请求访问一个JSP页面。
2. 服务器接收到请求后,通过Web容器(如Tomcat)将JSP 页面转化为一个Servlet。
3. Servlet容器编译并加载Servlet,并创建一个Servlet实例。
4. Servlet实例执行JSP页面的代码,生成动态内容。
5. 生成的动态内容被发送回服务器。
6. 服务器将生成的动态内容作为HTTP响应发送回客户端。
7. 客户端接收到HTTP响应并将其显示在浏览器中。
在JSP运行过程中,以下是一些关键点:
- JSP页面中的Java代码会被编译并转化为相应的Servlet类。
这个过程只发生一次,即在第一次请求JSP页面时发生。
之后的请求会直接使用已编译的Servlet类。
- JSP页面中的HTML、JavaScript等静态内容会直接返回给客户端,而不需要进行编译。
- JSP页面中的动态内容是通过嵌入的Java代码和JSP标签来实现的,这些代码会在运行时被执行。
- Servlet容器负责管理和执行Servlet的生命周期,并处理与客户端的通信。
- JSP支持标签库(Taglib)的使用,可以方便地封装和重用一些常见的功能。
总之,JSP通过将Java代码嵌入在HTML页面中,使得开发人员可以方便地生成动态内容,并以网页形式呈现给用户。
实验九 Servlet应用实验九servlet应用实验九 servlet应用程序1.实验目标1.掌握servlet的编译和配置2了解servlet生命周期3了解servlet和JSP之间的区别2.实验内容与要求1.主要通过实践掌握servlet的使用和编写2.创建一个简单的servlet程序并在tomcat中进行配置3.创建一个servlet程序,可以接收客户端提交的参数,并在处理后返回给客户端。
4.使用request Getparametervalues(“”)获取复选框数据以实现用户注册功能3.实验步骤3) Java类生成的helloservlet被编译成helloservlet类。
编译时要注意使用它servlet-api.jar文件。
2.创建和部署servlet1)在tomcat\\webapps\\目录下创建自己的项目名称myexample2)在Tomcat\\webapps\\myexample目录中创建一个web inf目录,并创建一个classes目录,将编译后的helloservlet.class文件拷贝到这里。
3)在Tomcat\\webapps\\myexample目录中创建一个web inf目录,并创建一个web XML文件。
内容为Helloservlet是我们自己定义的servlet名称。
指定的helloservlet类(包括包名,如果有的话)指定了我们在ie.3中使用的地址。
启动Tomcat并运行测试1、response.setcontenttype(\;和request SetCharacterEncoding(\两种方法主要用于设置从客户端接收的字符编码和从服务器返回的信息的编码,以防止中文被篡改。
2、通过request.getparameter(\\方法分别得到从客户端传递过来的name和暗语3、最后用out.println()方法输出显示给客户的信息。
4.编译loginservlet Java,编译Jar文件时注意servlet API,Jar文件将被编译生成的loginservlet.class文件拷贝到tomcat\\webapps\\myproject\\web-inf\\classes目录下。
JSP 创建Servlet文件创建Servlet文件与创建普通的Java类,以及创建JavaBean的方法相同。
在MyEclipse开发工具中,用户可以通过可视化操作界面,直接创建Servlet文件。
首先,在MyEclipse的【包资源管理器】视图中,右击需要创建Servlet文件的项目,并执行【新建】|【Servlet】命令,如图6-2所示。
图6-2 执行创建Servlet命令在弹出的Servlet Wizard对话框中,分别输入Servelt所在包名称和Servlet名称,如【包】名为com;【名称】为Servlet,单击【下一步】按钮,如图6-3所示。
图6-3 设置Servlet 参数在弹出的对话框中,将显示将Servlet 添加到Web.xml 配置文档中的内容,如类名、名称、Mapping 地址、以及Web.xml 配置文档的路径,单击【完成】按钮,如图6-4所示。
图6-4 显示Servlet 的配置信息创建Servlet 设置完成后,MyEclipse 将根据设置内容自动创建Servlet 文件和添加Web.xml 配置信息。
然后,在【编辑器】视图中,显示Web.xml 和Servlet.java 文件内容,如图6-5所示。
在创建Servlet 过程中,启用或者禁用Servlet Wizard 对话框下面的复选框,来确定是否创建Servlet 必要的方法,如init( ) and destroy( )、doGet( )、doPost( )等等。
图6-5 显示创建的Servlet文件创建Servlet文件成功后,可以在项目的src目标的com包中看到已经创建Servlet.java文件。
文件名:Servlet.java用户除了通过可视化界面创建Servlet 文件外,还可以通过像创建类文件一样,进行创建该文件。
如先创建一个类文件,并在该类文件中加载javax.Servlet.http.Http Servlet 、javax.Servlet.http.HttpServletRequest 和javax.Servlet.http.HttpServletRespon se 类包。
第12章Servlet基础1.简述Servlet和JSP的关系。
答:Servlet是服务器端运行的一种Java应用程序。
当浏览器端有请求则将其结果传递给浏览器。
在JSP中使用到的所有对象都将被转换为Servlet或者非Servlet的Java对象,然后被执行,所以执行JSP实际上与执行Servlet是一样的。
2.简述Servlet的生命周期。
答:Servlet的生命周期可分为下面几个阶段:(1)装载Servlet。
(2)实例化一个Servlet实例对象。
(3)调用Servlet的init( )方法进行初始化。
(4)服务。
(5)卸载。
3.简述HttpSession接口的功能和使用方法。
答:.HttpSession接口是Servlet提供会话追踪解决方案。
HttpSession对象存放在服务器端,只是对cookie和url重写技术的封装应用。
使用HttpSession进行会话控制的过程:(1)获得一个HttpSession实例对象;(2)访问和设置与会话相关联信息,维护会话的状态;(3)废弃会话数据。
4.简述开发一个Servlet所需要的步骤。
答:第一步:编写Servlet实例第二步:在web.xml文件中配置该Servlet第三步:编写其它文件5.编写一个html页面和一个Servelt,实现利用Servelt的doPost方法读取html文件中Form表单内容。
答:参考12.6.26.写一个利用HttpSession接口的用户登录的Servlet,当用户已经登录时,返回欢迎信息;否则转向登录页面。
答:第一步:编写Servlet实例SessionServlet.java所示。
package com;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;/**** 使用HttpSession管理会话的登录Servlet*/public class LoginServlet extends HttpServlet {p rotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doPost(request, response);}p rotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GB2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<body>");out.println("<head>");out.println("<title>使用HttpSession管理会话的登录页面</title>");out.println("</head>");out.println("<body>");// 获取会话对象HttpSession session = request.getSession();// 从会话对象中读取数据Boolean isLogin = (Boolean) session.getAttribute("isLogin");if (isLogin == null) {isLogin = Boolean.FALSE;}String user = request.getParameter("user");String password = request.getParameter("pass");if (isLogin.booleanValue()) {// 从会话对象中读取数据user = (String) session.getAttribute("user");Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else if ((user != null) && (password != null)) {// 在会话对象中保存数据session.setAttribute("user", user);session.setAttribute("isLogin", Boolean.TRUE);Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else {out.println("<h2>请在下面输入登录信息</h2>");out.println("<form method=\"post\" action=\"login\">");out.println("<table>");out.println("<tr>");out.println("<td>用户名:</td>");out.println("<td><input name=\"user\" type=\"text\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td>密码:</td>");out.println("<td><input name=\"pass\" type=\"password\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td></td>");out.println("<td><input name=\"ok\" type=\"submit\" value=\"确定\">");out.println("<input name=\"cancel\" type=\"reset\" value=\"重置\"></td>");out.println("</tr>");out.println("</table>");out.println("</form>");}out.println("</body>");out.println("</html>");}}第二步:在web.xml文件中配置该Servlet<web-app>……<!-- ServerInfoServlet definition --><servlet><description></description><display-name>getSession</display-name><servlet-name> getSession </servlet-name><servlet-class>com.SessionServlet</servlet-class></servlet><!-- SessionServlet definition --><servlet-mapping><servlet-name>getSession</servlet-name><url-pattern>/getSession</url-pattern></servlet-mapping>……</web-app>第13章使用Servlet过滤器和监听器1、什么是过滤器?什么是监听器?分别应用在哪些方面?答:对Web应用来说,过滤器就是驻留在服务器端,在源数据和目的数据间,对Web请求和Web响应的头属性(Header)和内容体(Body)进行操作的一种特殊Web组件。
实验五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的页面显示效果。
JSP Servlet实现控制
在上个实例中的Servlet集控制、显示、业务处理于一身,本练习实现了求取两个数字之和,其实现方式采用MVC模式实现。
JavaBean负责求取两个树的和,JS P负责显示输入信息,Servlet负责页面控制。
该实例的实现步骤如下所示:(1)创建sum.jsp文件,其代码如下所示:
(2)创建JavaBean:sum.java,负责求取两个数的和,法setNum()设置两个变量的值,NumS()返回两个数的和。
其代码代码如下:
如下所示:
字符,页面会自动转向sum.jsp页面。
(4)测试。
测试之前要配置Servlet。
请求sum.jsp文件,执行结果如图5-25。
输入数据就可以计算两个数的和。
图5-25 输入数字。
jsp+servlet实例
开发环境myeclipse+tomcat6
1、先创建web project,项目名为RegisterSystem,
2、在WebRoot 目录下创建login.jsp文件,只需修改body中的内容,如下所示:<body>
<form action="login">
username:<input type="text" name="username"><br>
password:<input type="password" name="pwd"><br>
<input type="submit">
</form>
</body>
3、在scr目录下的com.ht.servlet编写AcountBean.java文件,代码如下:package com.ht.servlet;
public class AccountBean {
private String username = "";
private String password = "";
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
ername = username;
}
}
4、在scr目录下的com.ht.servlet编写servlet类CheckAccount.java文件,代码如下:
package com.ht.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 javax.servlet.http.HttpSession;
public class CheckAccount extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
HttpSession session = req.getSession();
AccountBean account = new AccountBean();
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
account.setPassword(pwd);
account.setUsername(username);
if((username != null)&&(username.trim().equals("jsp"))) {
if((pwd != null)&&(pwd.trim().equals("1"))) {
System.out.println("success");
session.setAttribute("account", account);
String login_suc = "success.jsp";
resp.sendRedirect(login_suc);
return;
}
}
String login_fail = "fail.jsp";
resp.sendRedirect(login_fail);
return;
}
}
5、在WebRoot目录下编写success.jsp文件成功后跳转
<body>
<%
AccountBean account = (AccountBean)session.getAttribute("account"); %>
username:<%= account.getUsername()%>
<br>
password:<%= account.getPassword() %>
</body>
6、在WebRoot目录下编写fail.jsp文件失败后跳转
<body>
Login Failed! <br>
</body>
7、修改web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<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>CheckAccount</servlet-name>
<servlet-class>com.ht.servlet.CheckAccount</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckAccount</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>。