前言:从EL表达式到JSTL标签,减少了login.jsp和index.jsp页面中的java代码,而今天的学习是让jsp中彻底没有java代码,原本写在doLogin.jsp做登录判断的java代码,我们不写在jsp文件中,而是将java代码写在java文件中 -- servlet
一.servlet 的简介 1.servlet 是什么?
servlet是java编写的服务器端的程序,运行在web服务器中。
2.servlet 的生命周期。实例化 | Servlet 容器创建 Servlet 的实例 |
初始化 | 该容器调用 init() 方法 |
请求处理 | 如果请求 Servlet,则容器调用 service() 方法 |
服务终止 | 销毁实例之前调用 destroy() 方法 |
public class HelloServlet implements Servlet {
prvate ServletConfig config;
Public void destory();
public ServletConfig getServletConfig(){
return config;
}
public void init(ServletConfig config)throws ServletException{
this.config=config;
System.out.println("初始化!");
}
Public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException{
PrintWriter out = res.getWrite();
out.println("Hello world");
out.close();
}
public void destroy() {
super.destroy();
System.out.println("释放资源!"); }
}
二.Servlet 相关接口
1.ServeltConfig 接口(在Servlet初始化过程中获取配置信息,一个Servlet只有一个ServletConfig对象)
方法名称 | 功能描述 |
String getInitParameter(String name) | 获取web.xml中设置的以name命名的初始化参数值 |
ServletContext getServletContext() | 返回Servlet的上下文对象引用 |
方法名称 | 功能描述 |
ServletContext getContext(String path) | 返回服务器上与指定URL相对应的 ServletContext对象 |
void setAttribute(String name,Object obj) | 设置Servlet中的共享属性 |
Object getAttribute(String name) | 获取Servlet中设置的共享属性 |
方法名称 | 功能描述 |
String getInitParameter(String name) | 返回服务器上与指定URL相对应的ServletContext对象, 实际上是调用ServletConfig接口的同名方法 |
ServletContext getServletContext() | 返回Servlet的上下文对象引用,实际上是调用 ServletConfig接口的同名方法 |
void init() | 初始化Servlet |
方法名称 | 功能描述 | |
void doGet(HttpServletRequest request,HttpServletRresponse response) | 以Get请求服务时调用 | |
void doPost(HttpServletRequest request,HttpServletRresponse response) | 以Post请求服务时调用 |
1) doGet():用户使用get方式提交请求时调用
2) doPost():用户使用post方式提交请求是调用
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//doGet方法体内容
}
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//doPost方法体内容
}
四. servlet的作用
1.接收用户端发来的请求
2.调用其他java程序来处理请求
3.将处理结果,返回到服务器中
五.使用servlet接收用户发来的请求
1.实现servlet接口(我们需要把servlet中的方法重写,会得到五个方法)首先我们不在需要doLogin.jsp文件,在java文件下方创建一个包名为com.xxx.servlet,该下方的类为LoginServlet。
1)init() 方法
init() 方法被设计成只调用一次(初始化:当请求第一次进入servlet就会调用该方法。)
@Override
public void init(ServletConfig arg0) throws ServletException {
//第一次进来:当请求第一次进入servlet就会调用该方法
System.out.println("我初始化啦");
}
2)service() 方法
service() 方法是执行实际任务的主要方法(代码都是写在该方法中)
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
}
3)destroy() 方法
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。
@Override
public void destroy() {
//销毁的情况分为:1.服务器关闭
// 2.这个类被修改啦
System.out.println("我销毁啦");
}
4)得到配置
@Override
public ServletConfig getServletConfig() {
return null;
}
5)得到信息
@Override
public String getServletInfo() {
return null;
}
实现servlet的运用:该代码是替代了原本的login.jsp文件,在该类中和doLogin.jsp的接收用户发来的请求一样,代码如下.
package com.yjx.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.http.HttpRequest;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet implements Servlet{
//第一步实现servlet接口
/**
* 初始化
*/
@Override
public void init(ServletConfig arg0) throws ServletException {
//第一次进来:当请求第一次进入servlet就会调用该方法
System.out.println("我初始化啦");
}
/**
* 服务
*/
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//代码都是写在该方法中
//ServletRequest:其实就是request 请求
//ServletResponse:就是response 响应
//强转响应和请求,为响应和请求的子类
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
req.setCharacterEncoding("utf-8");//防止乱码的代码
//先获取到传过来的数据
String name=req.getParameter("username");
String pwd=req.getParameter("pwd");
//将数据打印在页面上,在原先jsp文件中我们直接out.print
//但是在该java文件中我们需要通过响应对象获取了输出对象
PrintWriter out=response.getWriter();
//out设置的变量名,可以随意设置,但是我们经常都是用out.print所有将变量名设置为out更好
//当获取到数据后,判断该用户是否登录成功
if("zking".equals(name)&&"zking123".equals("pwd")) {
out.print("登录成功");
}else {
out.print("登录失败");
}
}
//以上步骤过后,我们需要进行配置,不然登录请求发送时不知道进入那个java文件中,所以我们要配置servlet的访问路径
//配置路径去到web.xml文件中配置
/**
* 销毁
*/
@Override
public void destroy() {
//销毁的情况分为:1.服务器关闭
// 2.这个类被修改啦
System.out.println("我销毁啦");
}
/**
* 得到配置
*/
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 得到信息
*/
@Override
public String getServletInfo() {
return null;
}
}
六.Servlet 的部署与配置
1.Servlet 的部署
2.Servlet 的配置
在web.xml文件中配置Servlet(注:配置以后记得重启服务器)
HttpServletTest
cn.jbit.servlet. HttpServletTest
HttpServletTest
/HttpServletTest
3.运行 Servlet
1)启动Tomcat服务器
2)在浏览器中输入:http://localhost:8080/store/HttpServletTest
沾不到氢氧化钠,描不透锰硅铝钾。
我为你相思牵挂,后来你无穷变化,我黯然神伤该如何应答。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)