【Web】Servlet基本概念
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
Servlet 三大域对象
| 对象类型 | 对象名称 | 范围 | 备注 |
|---|---|---|---|
| HttpServletRequest | request | 一次请求内有效 | servlet的域对象 |
| HttpSession | session | 一次会话范围内有效 | servlet的域对象 会话(打开浏览器访问服务器,直到关闭浏览器) |
| ServletContext | application | 整个web工程范围内都有效 | servlet的域对象 工程(只要web工程不停止,数据都在) |
注意:只关闭标签页的话,session状态是还在的。要完全关闭浏览器后,重新打开才会启用新的session。
session有自身的生命周期,如一定的时间内不再激活的话就会过期,被服务器注销。
Servlet 容器
servlet 容器(tomcat)中有很多 servlet 程序
Java Servlet(Java服务器小程序)是一个基于 Java 技术的 Web 组件,运行在服务器端,它由 Servlet 容器所管理,用于生成动态的内容,Servlet 是平台独立的 Java 类,编写一个 Servlet,实际上就是按照 Servlet 规范编写一个 Java 类。Servlet 被编译为平台独立的字节码,可以被动态地加载到支持 Java 技术的 Web 服务器中运行。 Servlet没有 main() 方法,不能独立运行,它必须被部署到 Servlet 容器中,由容器来实例化和调用 Servlet 的方法(如 doGet() 和 doPost()),Servlet 容器在 Servlet 的生命周期内包容和管理 Servlet。
Servlet 容器也叫做 Servlet 引擎,是 Web 服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME 的请求,格式化基于 MIME 的响应。
Tomcat 是一个免费的开放源代码的 Servlet 容器,目前比较流行的 Web 服务器。
servlet 是小服务器程序,写后端服务器端用的;而 JSP 是模板引擎,显示前端用的。
其实,Tomcat 访问任何的资源都是在访问 Servlet!当然了,JSP 也不例外!JSP 本身就是一种 Servlet。为什么我说 JSP 本身就是一种 Servlet 呢?其实 JSP 在第一次被访问的时候会被编译为 HttpJspPage 类(该类是 HttpServlet 的一个子类)
JSP 是为了简化 Servlet 的工作出现的替代品,Servlet 输出 HTML 非常困难,JSP 就是替代 Servlet 输出 HTML 的。
jsp 就是在 html 里面写 java 代码,servlet 就是在 java 里面写 html 代码…其实 jsp 经过容器解释之后就是 servlet。只是我们自己写代码的时候尽量能让它们各司其职,jsp 更注重前端显示,servlet 更注重模型和业务逻辑。不要写出万能的 jsp 或 servlet 来即可。
Servlet 应用
servlet 主要就是处理页面传过来的表单数据,页面上的 form 的 action 指向到 web.xml 中,然后在 XML 中对称节点中找到对应的 servlet 类去执行你的处理方法.
servlet 中使用 HttpServletRequest 和 HttpServletResponse 来接受和返回数据
这个类要继承一个 HttpServlet 类然后重写他的 doGet 和 doPost 方法,一般在 doGet 里 this.doPost(req,resp); 然后具体的代码在 doPost() 方法中执行。
Servlet
一个登陆的小例子,这个是 Servlet.
package com.wangchao.action;
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;
import com.wangchao.bo.AdminBO;
import com.wangchao.service.SfInfoService;
import com.wangchao.service.SfInfoServiceImpl;
public class LoginAction extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
String name = "";
String pass = "";
SfInfoService loginser;
AdminBO bo;
boolean istrun;
PrintWriter pw;
public LoginAction(){
loginser = new SfInfoServiceImpl();
bo = new AdminBO();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
name = req.getParameter("username");
pass = req.getParameter("password");
bo.setName(name);
bo.setPassword(pass);
istrun = loginser.userLogin(bo);
pw = resp.getWriter();
if(istrun){
req.setAttribute("name", name);
req.setAttribute("pass", pass);
req.getRequestDispatcher("admin/user_info.jsp").forward(req, resp);
// resp.sendRedirect("admin/MyJsp.jsp");
}else{
pw.print("<h3>用户名或密码错误,点击<a href='admin/index.jsp'>返回</a></h3>");
pw.flush();
}
}
}
web.xml
下面是 web.xml
在 web.xml 中配置 servlet 的映射。
要配置 servlet 的名称以及对应的类,还有名称以及对应的url样式映射。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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">
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.wangchao.action.LoginAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
</web-app>
JSP
以下为 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 'index.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>
<div align="center">
<form action="login.do" method="post">
用户名:<input type="text" name="username" style="color: red"><br><br>
密 码:<input type="password" name="password" style="color: green"><br><br>
<div align="center">
<input type="submit" value="登陆"> <input type="reset" value="重填">
</div>
</form>
</div>
</body>
</html>
【Web】Servlet基本概念的更多相关文章
- 一、HTML概述 二、web相关的概念 三、HTML的常用标签
一.HTML概述###<1>概念 HTML:Hypertext Markup Language,超文本 标记语言,用来描述网页的一种语言. 非编程语言,由浏览器直接解释运行. ###< ...
- org.springframework.web.servlet.DispatcherServlet noHandlerFound
1 请求URL: http://localhost:8080/mvc/rojas 2 control RequestMapping : @RequestMapping(value="xx ...
- servlet有关概念
关于servlet的概念 URL.URN与URi HTTP GET请求,POST请求(区别.适用) 编码 动态网页(GCI.PHP.ASP.JSP等)与静态网页 Model2 静态网页:指的是请求服务 ...
- 静态资源[org.springframework.web.servlet.PageNotFound]
springmvc 无法访问js.css.jpg等资源文件,tomcat启动报警告如下 [org.springframework.web.servlet.PageNotFound] - No mapp ...
- org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI [/AssetRepair/assetRepairController/test.do] in DispatcherServlet with name 'assetrepair'
web.xml文件配置: xxx-servlet.xml 我们可以发现DispatcherServlet会处理"jsp"后缀的请求;而模型视图后缀也是jsp的 如果这样配置会报以下 ...
- org.springframework.web.servlet.view.InternalResourceViewResolver
http://blog.csdn.net/superdog007/article/details/28857495 我们在controller里面经常这样return一个ModelAndView: r ...
- springmvc报错 org.springframework.web.servlet.DispatcherServlet
在写springMVC时,导入所有需要的包后,运行程序,控制台报以下错误: 严重: Servlet [springDispatcherServlet] in web application [/Spr ...
- maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
主要原因是maven项目里面的jar包吗,没有导入到项目中 maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframewor ...
- NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available
问题描述: 项目中需要配置多个视图解析器,所以使用ContentNegotiatingViewResolver来处理,在其内部设置了FreeMarkerViewResolver .InternalRe ...
- org.springframework.web.servlet.PageNotFound
2017-07-11 16:36:13.489 WARN [http-nio-8032-exec-16]org.springframework.web.servlet.PageNotFound -Re ...
随机推荐
- Kubernetes-介绍
1. kubernetes 是什么? Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化. Kubernetes 这个名字源于希腊语,意为 ...
- mac_使用Charles抓取Firefox 链接
1. 首先在Charles 中导出证书,操作为:Help选项 --> SSL Proxying --> 选择第二项 Install Charles Root Certificate 2. ...
- Solution -「GLR-R4」大暑
\(\mathscr{Description}\) Link. 这里有兔以前写的另一个题意,大家可以参考着看看. 你有两个坐标集合 \(X,Y\),\(X=\{(0,y)\mid y\in ...
- Qwen2ForSequenceClassification文本分类实战和经验分享
本文主要使用Qwen2ForSequenceClassification实现文本分类任务. 文章首发于我的知乎:https://zhuanlan.zhihu.com/p/17468021019 一.实 ...
- biancheng-Java设计模式:23种设计模式全面解析(超级详细)
http://c.biancheng.net/design_pattern/ 24种设计模式 1.创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创 ...
- MacBook配置
如何在Mac上安装Java JDK及配置环境变量 1. 访问Java JDK 网站下载与安装(以JDK8为例) 点击下载链接:https://www.oracle.com/java/technolog ...
- langchain-agent
Agent 参考:LangChain 实战:Agent思维 大模型是被训练出来的,知识是有时间限制的,所以当进行问答时,可以结合本地知识库和调用搜索或在线API来增强自身能力,这些不属于大模型的内部数 ...
- 第三届全国高校计算机能力挑战赛-C
单项选择题 1.题 (3.0分) 以下叙述正确的是(). A.在C程序,至少要包含一个库函数 B.C程序的一行可以写多条语句 C.对一个C程序进行编译就可以生成可执行文件 D.C程序中的注释只 ...
- 认识soui4js(第1篇)
源代码:https://github.com/soui4js/soui4js soui4js是soui4+quickjs的结合体. soui4是一套c++ directui客户端开发框架,soui4j ...
- 浅谈OpenStack(一)
本文分享自天翼云开发者社区<浅谈OpenStack(一)>,作者:EmmaDu OpenStack刚诞生的时候比较单纯,只有计算(NASA开源)和存储(Rackspace开源)两个功能组件 ...