【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 ...
随机推荐
- nginx 域名rewrite跳转
转自:http://blog.csdn.net/xingfujie/article/details/7337832 需求:nginx规则,所有对OA.bccom.info的访问,redirect到uc ...
- 一个字 word 是16位, 一个字由两个字节组成 , 字节=byte ,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit
一个字 word 是16位, 一个字由两个字节组成 , 字节=byte,,一个字节8位, 位=bit 如果没有特殊说明kb 就是指 k*bit kbyte= k*byte
- 关于百度地图API的地图坐标转换问题
原文:关于百度地图API的地图坐标转换问题 我在之前的文章利用html5获取经纬度并且在百度地图中显示位置中使用了百度地图的API来显示html5获取的地理位置,在文中我说过这样的话,我说百度地图的准 ...
- 图片url中包含中文导致网络请求404
需要对其中的中文使用转换格式,注意不是整个url,如果是整个,"/"这个网络分隔符`也会被转换的 URLEncoder.encode("福利", "u ...
- Android 内核初识(8)Binder
简介 Binder是Android系统提供的一种IPC(进程间通信)机制.由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等.Bind ...
- ERP 能够做什么
1. ERP 能解决既有物料短缺又有库存积压的库存管理难题 企业在管理库存问题上,经常处于两难之中. 要多存物料,肯定会积压资金:少存物料,又怕物料短缺,影响生产. 这样,物料的短缺和库存积压总是同时 ...
- c语言时间库函数#include<time.h>
日期与时间函数<time.h> 头文件<time.h>中说明了一些用于处理日期和时间的类型和函数.其中的一部分函数用于处理当地时间,因为时区等原因,当地时间与日历时间可能不相同 ...
- wildfly-9.0.2 web项目部署详细步骤
一.配置操作系统环境变量 JAVA_HOME = C:\Program Files (x86)\Java\jdk1.7.0_67 JBOSS_HOME = F:\server\wildfly-9.0. ...
- 【转】VIRTUALBOX导入已有.VDI文件步骤
原文网址:http://blog.csdn.net/wanghai__/article/details/6703923 1.安装SUN VIRTUALBOX 2.新建,进入到“新建虚拟电话”对话框,下 ...
- NSArray和NSMutableArray的copy和MutableCopy
NSArray: //main.m #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { ...