以登录实例简单介绍Servlet使用
1.简单介绍
Java Servlet 是执行在 Web server或应用server上的程序,使用 Servlet。您能够收集来自网页表单的用户输入。呈现来自数据库或者其它源的记录。还能够动态创建网页。
作用:Web 浏览器的请求和 HTTP server上的数据库或应用程序之间的中间层。
简单说就是接受client传递的输入然后进行处理(链接数据库等)然后在将对应的结果(html等)在返回给client显示相当于MWC中的Ccontroller层。
Servlet程序的基本执行过程时序图:以下通过一个登陆实例来简单说明下。
2.登录实例
编写步骤:
1.建立LoginSerlvet并继承HttpServlet
2.覆盖doGet或doPost方法,编译
3.在web.xml配置文件里进行配置
4.写html登录页面并放入Tomcat中webapps中相应web项目中
5.启动《Tomcatserver》,输入网址:http://127.0.0.1:8080/text_servlet/login.html执行程序
《apache-tomcat-5.5.26》中有相应的程序,配置好Tomcat相应的环境变量就能够执行。
LoginServlet.java
<span style="font-family:SimSun;font-size:14px;">
import javax.servlet.http.*;
import javax.servlet.*; public class LoginServlet extends HttpServlet{ protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
java.io.IOException{ String username = request.getParameter("username");
String password = request.getParameter("password"); System.out.println("username"+username);
System.out.println("password"+password); response.setContentType("text/html");
response.getWriter().println("login Success!");
}
}</span>
web.xml
<span style="font-family:SimSun;font-size:14px;">
<?xml version="1.0" encoding="ISO-8859-1"? >
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>MyServlet</servlet-name> <!--servlet内部名称-->
<servlet-class>LoginServlet</servlet-class> <!--自己编写的servlet类名称。假设有包必须写完毕-->
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name> <!--servlet内部名称-->
<url-pattern>/loginServlet</url-pattern> <!--供client訪问的名称必须以/开头-->
</servlet-mapping>
</web-app>
</span>
login.html
<span style="font-family:SimSun;font-size:14px;">
<html>
<head>
<title>登录</title> </head>
<body>
<form action="loginServlet">
用户:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html></span>
执行结果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
时序图:
对第7步:service的说明:在第6步中在对LoginService实例化后会调用调用父类HttpServlet中service方法来确定client进行的是dopost提交还是doget提交,然后在转到子类相应的方法。假设子类中没有相应的提交方法,会调用HttpServlet中的父类的方法。
HttpServletRequest: 包装client提交过来的全部数据。1.client的IP地址 2
.client的表单数据 3.Cookies信息
HttpServletResponse:包装了向client写出的数据。 1.将数据库信息输出
2.向client输出图片html等
3.servlet生命周期
生命全过程:
1.载入Servlet并实例化 new
2.初始化 init
3.处理请求 service doGet doPost
4.退出服务 destroy()
TestLifeCycleServlet实例:
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*; public class TestLifeCycleServlet extends HttpServlet{
//1.构造函数
public TestLifeCycleServlet(){
System.out.println("-------------TestLifeCycleServlet()----------------");
}
//2.init方法
public void init(){
System.out.println("-------------init()----------------");
}
//3.doGet方法
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException{
System.out.println("-------------doGet()----------------");
}
//4.销毁时调用的方法
public void destroy(){ }
}
输入:http://127.0.0.1:8080/text_servlet/TestLifeCycleServlet。
记得将生成的.class文件放在Tomcat相应的文件夹和配置相应的web.xml文件。
执行结果为:
特点:单实例多线程
TestLifeCycleServlet会在第一次使用的时候new,并且在new完该Servlet后。会调用init方法,new和init方法仅仅一次。以后不再实例化,所以Servlet是单实例多线程的,Servlet不是线程安全的。所以一般不定义成员变量。
以登录实例简单介绍Servlet使用的更多相关文章
- CAS单点登录原理简单介绍
1. SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统. ...
- 基于Servlet的MVC模式用户登录实例
关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: ...
- Linux守护进程简单介绍和实例具体解释
Linux守护进程简单介绍和实例具体解释 简单介绍 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程. ...
- 实例级别和类级别的static、构造函数、字段属性的简单介绍
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实例级别 ...
- jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册
简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...
- ssh远程登录命令简单实例
ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...
- 自动化测试基础篇--Selenium简单的163邮箱登录实例
摘自https://www.cnblogs.com/sanzangTst/p/7472556.html 前面几篇内容一直讲解Selenium Python的基本使用方法.学习了什么是selenium: ...
- 《HTML 5网页开发实例具体解释》样章、内容简单介绍、前言
http://spu.jd.com/1167757597.html http://product.dangdang.com/23484942.html 样章 http://download.csdn. ...
- Tstrings类简单介绍及实例
用TStrings保存文件;var S: TStrings;begin S := TStringList.Create(); { ... } S.SaveToFile('config.txt' ...
随机推荐
- Java高级架构师(一)第37节:反向代理和动静分离的实现
http协议->server->location 输入http:locahost:80/ 进入百度的界面. 做负载转发测试.路径已经转发,可能一些协议已经屏蔽了,导致内容出不来. 关于负载 ...
- 如何释放 DB_RECOVERY_FILE_DEST_SIZE
转自原文 如何釋放 DB_RECOVERY_FILE_DEST_SIZE,有删减 oracle默認安裝之後,如何沒有手動設置歸檔路徑(alter system set log_archive_dest ...
- The file “Info.plist” couldn’t be opened because there is no such file
修改了Info.plist的实际文件位置(项目和单元测试对应不同的Info.plist),报错 (null): could not read data from '/Users/xxxxx/Deskt ...
- 第六章在U盘上运行openwrt(引导)--补
1.前言 前面已经把U盘挂在了703N上了,现在只需要打开路由器,使用TTL串口或者putty(ssh模式需要用户名和密码-第一章刷openwrt的时候已经设置好)登陆路由器. 2.将系统内所有文件同 ...
- android 监控软键盘确定 搜索 按钮并赋予点击事件
在android的实践开发中,为了界面的美观,往往那些搜索框并没有带搜索按钮,而是调用了软键盘的搜索按钮,完成这次时间 1 2 好吧!直接上代码! <EditText android:id=&q ...
- 用LaTeX写线性规划
线性规划由目标函数和若干约束构成,Latex中并没有直接的命令来写线性规划.简单的做法是使用\begin{eqnarray} … \end{eqnarray}命令,但eqnarray命令是使若干方程按 ...
- pycharm的插件pylint报错:java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality stat
java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. ...
- DevExpress组件AspxCallBack之传递数值到客户端多个控件
AspxCallBack从服务器传值到客户端单个控件可以用CallbackEventArgs的e.Result来传值,下面是传值多个控件的做法. ASPX页面代码: <dx:ASPxCallba ...
- 数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true
数组类型参数传递: 若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 ...
- Java笔记15:多线程
Java实现多线程有两种方式:一是继承Thread类:二是实现Runable接口. 一.Thread实现 publicclass ThreadDemo2 { publicstaticvoid main ...