【Servlet】Servlet应用的get、post访问及和JSP的配合使用
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同。
Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet实例化过程
1. servlet容器负责创建servlet的一个实例(在第一次请求servlet的时候).
2. 容器调用该实例的init()方法完成初始化工作.
3. 如果容器对该servlet有请求,则调用此实例的service()方法,service()方法根据请求类型(get还是post)决定调用doXXX()方法.
4. 当web应用被终止时,容器在销毁本实例前调用它的destroy()方法.
5. 销毁并标记该实例以供作为垃圾收集.
在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次。
而service方法执行的次数则取决于servlet被客户端访问的次数。
Servlet如何处理请求
当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象.
在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把创建好的ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,最后Servlet容器把响应结果传给用户。
一个简单的Servlet
package com.app.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; public class Jue extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.print("这是一个get");
out.close();
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
out.print("这是一个post");
out.close();
} @Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
} @Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
} }
配置Servlet的web.xml
servlet和servlet-mapping中的servlet-name要保持一致。
url-pattern即是该servlet的访问路径。
<!--servlet逻辑名-->
<servlet>
<servlet-name>Jue</servlet-name>
<servlet-class>com.app.servlet.Jue</servlet-class>
</servlet>
<!--servlet映射-->
<servlet-mapping>
<servlet-name>Jue</servlet-name>
<url-pattern>/jue.eee</url-pattern>
</servlet-mapping>
Servlet的get访问
Servlet默认的即为get访问。
在地址栏输入:http://localhost:8888/WebDemo/jue.eee
Servlet的post访问
Servlet的post访问必须建立在JSP的表单的基础上。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'MyJsp.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
This is my JSP page. <br>
<form method="post" action="user.eee">
<table cellspacing="5" align="center" width="840" border-collapse="collapse">
<tr><td width="220" align="right"><img src="img/logo_login01.gif"/></tr>
<tr ><td align="center"></td><td></td></tr>
<tr ><td align="right">账 号: </td>
<td><input type="text"id="username" name="username"style="height:25px;width:250px" vspace="5"></td></tr>
<tr><td align="right">密 码: </td>
<td><input id="password"type="password" name="password"style="height:25px;width:250px" vspace="5"></td></tr>
<tr><td ></td><td><input type="checkbox">
<font size="1" face="微软雅黑" color="red"> 记住我一周</font></td>
<tr><td ></td><td>
<input type="submit" name="submit" value="LOGIN"/>
<a href="https://passport.csdn.net/account/forgotpassword" target="_blank" align="right">
<font size="1"><u>忘记密码</u></font></a>
</td></tr>
</table>
</form>
</body>
</html>
访问该表单所在页面:http://localhost:8888/WebDemo/MyJsp.jsp
登录后,页面即会跳转至 Servlet 的post页面 :http://localhost:8888/WebDemo/user.eee
【Servlet】Servlet应用的get、post访问及和JSP的配合使用的更多相关文章
- org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.servlet.Servlet
java.lang.ClassCastException: org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.se ...
- sae Servlet class XXXX is not a javax.servlet.Servlet
以前都是使用myeclipse开发web工程上传sae后没有问题,但是使用javaee导出war包上传sae 无法访问 Servlet class XXXX is not a javax.servl ...
- cannot be cast to javax.servlet.Servlet
在第一次开发Maven项目时,maven环境和仓库以及eclipse都和讲师讲解的一样,可是却遇到下面这个问题: java.lang.ClassCastException: servlet.UserS ...
- java.lang.ClassCastException: cn.itcase.serviceImpl.servicestudentImpl cannot be cast to javax.servlet.Servlet
java.lang.ClassCastException: cn.itcase.serviceImpl.servicestudentImpl cannot be cast to javax.servl ...
- 异常:Servlet class X is not a javax.servlet.Servlet
使用Maven命令 mvn archetype:create 创建了一个简单的web项目.导入Eclipse运行时,报这样的异常信息: Servlet class X is not a javax.s ...
- Servlet Servlet是Java平台上的CGI技术
Servlet Servlet是Java平台上的CGI技术.Servlet在服务器端运行,动态地生成Web页面.与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更 ...
- Servlet - Servlet相关
1. 概念 Servlet是指任何实现了Servlet接口的类, Servlet运行于支持Java的应用服务器中, Servlet可以响应任何类型的请求, 但大多数情况下, Servlet只用来扩展基 ...
- "xxx cannot be cast to jakarta.servlet.Servlet "报错解决方式
在做jsp的上机时候同学出现了一个500错误:com.kailong.servlet.ComputeBill cannot be cast to jaka.servlet.Servlet 然后因为我用 ...
- servlet servlet请求与响应
request 客户端浏览器发出的请求被封装成一个HttpServletRequest对象.所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件,客户端的Ip地址甚至客户端操作系统都包含在Ht ...
随机推荐
- live555
相关资料: Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码格式的音 ...
- AD设计中,三种大面积覆铜的区别
在AD设计中,主要有三种大面积覆铜方式,分别是Fill(铜皮) Polygon Pour(灌铜)和Plane(平面层),这三种方式刚开始的时候没有细细区分,现在分别应用了一下, 总结如下,欢迎指正 F ...
- Android ServiceConnection
绑定到一个Service 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交 ...
- Ember.js demo2
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1 ...
- MySQL主从复制中断处理一例
收到mysql主从中断报警邮件,马上登上服务器查看,发现是中继日志损坏. Show slave status\G,提示中继日志损坏,按以往的做法,根据提示重新指定合适的日志文件以及pos点. Rel ...
- Android开发UI之android:gravity / android:layout_Gravity,android:padding / android:layout_margin属性区分
android:gravity / android:layout_Gravity区别: android:gravity 是设置该view里面的内容相对于该view的位置,例如设置button里面的te ...
- MySQL for Excel用法
MySQL有一款工具“MySQL for Excel”它可以提供将Excel的数据导入MySQL,或者将MySQL的数据导出到Excel的功能.简而言之,使用MySQL for Excel可以通过Ex ...
- 自动计算label字体的高度和图片拉伸处理(封装成分类分享)
自动计算label字体的高度和图片拉伸处理 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bo ...
- 【原】SparkContex源码解读(二)
版权声明:本文为原创文章,未经允许不得转载. 继续前一篇的内容.前一篇内容为: SparkContex源码解读(一)http://www.cnblogs.com/yourarebest/p/53266 ...
- jsp简易文件上传(common.fileupload)
昨天开始重新架构我的V&View(维视),之前写文章使用的是一个kindediter的插件,挺好用的.最近不知道咋了,出现了些小问题.早在写V&View的时候就想用以下两种方法实现文章 ...