Servlet
2 篇文章0 订阅
订阅专栏
什么是servlet?
目录:
什么是servlet?
servlet的生命周期?
案例:使用servlet完成登录
配置式开发
具体代码
注解式开发
具体代码
jsp什么时候算是学完了?
在web项目中,如果想要达到那种最高境界,那么就要实现高内聚,低耦合,让jsp文件中没有java代码,为了达到这个要求,我们将会使用一下几种方法:
* 封装JavaBean
* 操作集成到 doxx.jsp
* 使用JSTL标签,EL表达式 代替了 java遍历操作,取值
* 有一种专门的页面 doxx.jsp之包含java代码
什么是jsp?
本质上就是一个java文件
本堂课将要实现的功能就在下面:
* 去除doxx.jsp
* 新建java文件
* 实现Servlet (接口)
* 继承HttpServlet(类)
什么是servlet?
servlet是小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器
简单来说,servlet就是java提供的一个类,这个类能够接受前端网页发出的请求
servlet的生命周期?
为了后期的操作,我们可以首先在web开发的eclipse中建一个类并实现Servlet接口(导包导第一个)
提示:在实现Servlet接口后,必须重写接口中所有的方法
重写方法中,方法与含义:
init方法:(当你开了一家餐厅,餐厅服务员入职后就等于调用了这个初始化方法)
也就是相当于,
1. 当请求第一次进来Servlet类时就会调用init初始化方法:
2. 所有的处理请求的java代码全部写到servlet方法中:
3. 当服务员开除时就调用了销毁的方法:
注意:destroy方法:服务器被关闭或Servlet类被修改时就调用销毁方法
4,5. getServlet,getServelet方法:相当于服务员入职后,可以查看其配置或信息
案例:使用servlet完成登录
——有以下两种方法
A.配置式开发:
一种就是上边提到的,编写一个类继承servlet接口并重写其中的五个方法,这种方法称为传统的开发模式(配置式开发),每次都要重写方法可能有些许麻烦~
代码的具体操作如下:
1. 提供访问路径【web.xml】需要重启服务器,修改了web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>web20</display-name>
<!-- web.xml 是整个项目的配置文件 -->
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!-- 如果修改了这个,一定要重启服务器 -->
<!-- 1.配置servlet -->
<servlet>
<!-- 给它去一个名字 -->
<servlet-name>one</servlet-name>
<!-- servlet-clas 需要填上类的全路径 -->
<servlet-class>
com.zking.servlet.LoginServlet
</servlet-class>
</servlet>
<!-- 2.配置servlet的访问路径 -->
<!-- mapping 映射 -->
<servlet-mapping>
<!-- 对应的servlet的名字 -->
<servlet-name>one</servlet-name>
<!-- 给它配置一个访问的路径 -->
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
</web-app>
2. 编写用来实现登录请求的处理java类,相当于doLogin.jsp:
package com.zking.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet implements Servlet{//用来实现登录请求的处理
//生命周期
@Override//初始化
public void init(ServletConfig arg0) throws ServletException {
//第一次进来:当请求来到这个Servlet 就会调用init方法
System.out.println("开始初始化");
}
@Override//得到配置
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override//得到信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override//服务
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
HttpServletResponse response=(HttpServletResponse) resp;
HttpServletRequest request=(HttpServletRequest) req;
//---------------所有的的代码全部写到这个方法中
req.setCharacterEncoding("utf-8");
//取到用户数据
String username = req.getParameter("username");
String password = req.getParameter("password");
//响应对象?------取值方式不一样
PrintWriter out = response.getWriter();
//取session通过请求对象
HttpSession session = request.getSession();
//取application通过请求对象 context->容器(名字不一样)
ServletContext application = request.getServletContext();
//走数据库
if(("root").equals(username)&&("root123").equals(password)) {
//登录成功
out.print("登陆成功");
}else {
//登录失败
out.print("登录失败");
}
}
@Override//销毁
public void destroy() {//init 初始化
//1.服务关闭了
//2.这个类被修改了
System.out.println("我销毁了");
}
}
3. 然后就可以在前端通过配置好的路径来进行传值了:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.getRequestDispatcher("/xx").forward(request, response);
%>
<%--
【编写自己的Servlet】
1.干掉所有的doxxx.jsp页面
2.编写java文件来代替doxxx.jsp
3.Servlet 接口具备接收前端请求的功能
传统的开发模式:配置式开发
注解式开发:@注解
--%>
<%
%>
<form action="login.jsp" method="post">
<p><input type="text" name="username"></p>
<p><input type="text" name="password"></p>
<p>
<button>登录</button>
</p>
</form>
</body>
</html>