[J2EE]servlet基础

简介: 一、servlet简介 Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。

一、servlet简介

Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。

servlet本质上是一个特殊java类,需要遵循servlet规范,比如servlet没有main方法,servlet和http协议联系紧密。

二、在eclipse中创建servlet

新建一个dynamic web project,src目录下新建包,然后新建一个HelloworldServlet.java类.

2.1继承HttpServlet类:

package ucas.ac.cn.servlet;
import javax.servlet.http.HttpServlet;

public class HelloworldServlet extends  HttpServlet{

}

2.2添加doGet和doPost方法

在eclipse中,单击鼠标右键->source->Override/Implement methods,然后选择doGet和doPost方法.
这里写图片描述

2.3登录示例

做一个用户登录的例子,用户在客户端提交用户名和密码后,HelloworldServlet去处理用户参数,根据处理结果转发到不同的页面.

2.3.1新建login.jsp

首先在webContent/12目录下添加login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
    <form action="" method="post">
        用户名:<input type="text" name="userName"><br> 密码:<input
            type="password" name="passWord"><br> <input
            type="submit" value="登录"><br>
    </form>
</body>
</html>

现在action地址为空,当点击登录按钮后我们希望一个servlet去处理用户提交的用户名和密码,下面在配置servlet路径。

2.3.2配置web.xml

  <servlet>
    <servlet-name>HelloworldServlet</servlet-name>
    <servlet-class>ucas.ac.cn.servlet.HelloworldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>HelloworldServlet</servlet-name>
      <url-pattern>/Helloworld</url-pattern>
  </servlet-mapping>

<servlet></servlet>中有两个属性,第一个是servlet-name,这个名字可以自定义,第二个是servlet-class,表示serlet-name所对应的java类的位置;<servlet-mapping></servlet-mapping>中也有2个属性,第一个servlet-name即为<servlet></servlet>中所定义的servlet的名字,第二个url-pattern为在浏览器中的访问名称,在这个实例中访问http://localhost:8080/工程名/Helloworld就会转到ucas.ac.cn.servlet包目录下的HelloworldServlet类。
修改logn.jsp:

<form action="<%=request.getContextPath() %>/Helloworld" method="post">

2.3.3编写doGet和doPost方法

在HelloworldServlet.java中编写处理用户名和方法的doGet和doPost方法:

package ucas.ac.cn.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 HelloworldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("userName");
        String password = req.getParameter("passWord");

        if (username.equals("admin") && password.equals("123456")) {

            req.getRequestDispatcher("/12/success.jsp").forward(req, resp);
        } else {
            req.getRequestDispatcher("/12/fail.jsp").forward(req, resp);
        }
    }

}

在doPost方法中,使用request对象接收用户名和密码,假定用户名为admin密码为123456时登录成功,转发到success.jsp;否则登录失败,转发到fail.jsp.
这里写图片描述

三、请求转发和请求重定向

在上面的登录实例中,servlet接收到用户输入的用户名和密码以后使用request的重定向方法转发到success.jsp和fail.jsp:

req.getRequestDispatcher("/12/success.jsp").forward(req, resp);

如果用户名和密码输入正确,登录成功,要跳转到另外一个网站,比如转到百度首页,把"/12/success.jsp"改成"https://www.baidu.com/",那么会出现404错误。使用请求重定向可以实现:

resp.sendRedirect("https://www.baidu.com/");

原因在于请求转发只能访问同一个项目下的资源,浏览器内到地址不会发生变化,整个过程处于同一个请求当中。

请求转发的过程:

  1. 客户端发送请求,servlet1接收请求做出处理。
  2. sevlet1调用sendReadirect()方法,转发给sevlet2或jsp。
  3. sevlet2处理客户端请求。

请求重定向的过程:

  1. 客户端发送请求,servlet1接收请求做出处理。
  2. sevlet1调用sendReadirect()方法,转发给sevlet2或jsp
  3. 客户端浏览器访问Servlet2
  4. sevlet2处理客户端请求。

    可以看出,请求重定向可以访问外部资源,地址栏发生变化。
    详细参考:
    Jsp 重定向、请求转发

目录
相关文章
|
Java .NET
【J2EE十三个规范】Web应用层之JSP和Servlet
<span style="font-family:楷体; font-size:19px; line-height:27px; widows:auto"><strong>【学习概要】</strong></span> <div style="font-family:楷体; font-size:19px; line-height:27px; widows:auto"><span style="
1550 0
|
开发框架 数据安全/隐私保护 开发者
|
4月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
41 3
|
4月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
42 1
|
4月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
79 0
|
4月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
31 0
|
6月前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
114 12
|
6月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
131 10
|
6月前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
69 9
|
6月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
73 7