目录
前提回顾
一、什么是servlet
二、实现与生命周期
先实现Servlet
重写方法
提供访问路径【web.xml】如果修改了web.xml需要重启服务器
案例:实现登录
第一种方法:通过实现servlet
二、继承与注解开发
访问方式;GET/POST
案例:实现登录
第二种方法:通过继承HttpServlet
前提回顾
jsp什么时候算是学完了【高内聚 低耦合】
没有java代码,在jsp文件中没有java
- 封装JavaBean
- *** 作集成到doXX.jsp
- JSTL代替了java遍历 *** 作 、取值
- 有一种专门的页面 doxx.jsp只包含java
什么是jsp?本质上就是一个java文件
- 去除doxx.jsp
- 新建java文件
- 实现Servlet(接口)
- 继承HttpServlet(类)
jsp -(当用户访问该jsp)=> java
一、什么是servletservlet是小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器
二、实现与生命周期
- 先实现Servlet
新建一个包com.zking.servlet之后再创建LoginServlet(用来实现登录请求的处理类)
注意实现不要导错包 选中javax.servlet
- 重写方法
public class LoginServlet implements Servlet{
@Override//销毁
public void destroy() {
// TODO Auto-generated method stub
}
@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 init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
@Override//服务
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
- 提供访问路径【web.xml】如果修改了web.xml需要重启服务器
web12
/index.jsp
one
com.zking.servlet.LoginServlet
one
/login.do
注意:servlet映射中的
案例:实现登录 第一种方法:通过实现servlet
index.jsp(主页界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--
传统的开发模式:配置式开发
注解式开发 @注解
--%>
LoginServlet.java(用来实现登录请求的处理类)
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author zjjt
* @Description 用来实现登录请求的处理
*/
public class LoginServlet implements Servlet{
//生命周期
@Override//init 初始化
public void init(ServletConfig arg0) throws ServletException {
//第一次进来:当请求来到这个servlet 就会调用init方法
System.out.print("开始初始化");
}
@Override//服务
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
HttpServletResponse response=(HttpServletResponse)resp;
HttpServletRequest request=(HttpServletRequest)req;
//所有代码写在这个方法中
req.setCharacterEncoding("gb2312");
//取用户数据
String username=req.getParameter("username");
String password=req.getParameter("password");
//通过响应对象获取输出对象
resp.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
//取session通过请求对象
HttpSession session = request.getSession();
//取application 通过请求对象
ServletContext application = request.getServletContext();
//走数据库
if("aa".equals(username)&&"123".equals(password)) {
//登录成功
out.print("登录成功");
}else {
//登录失败
out.print("登录失败");
}
}
@Override //销毁
public void destroy() {
// 1、服务关闭了
// 2、这个类被修改了
System.out.print("我销毁了");
}
@Override//Config 得到配置
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override//得到信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
}
注意:.getWriter()方法只有子类HttpServletResponse里面才有,父类ServletRequest没有
所以要将父类ServletRequest强转为子类HttpServletResponse
网页运行可能会出现乱码的情况,可以使用如下支持中文的编码
支持中文的编码:【utf-8】【gb2312】【big5】
web.xml
web12
/index.jsp
one
com.zking.servlet.LoginServlet
one
/login.do
二、继承与注解开发
继承不强制你重写,你需要什么就写什么
访问方式;GET/POSTGET:
- 通过地址栏携带参数
- 网页中的链接全部都是get
POST:
- 参数不会显示
- 参数没有长度限制
使用注解式开发(注意要带/)
@WebServlet("/test.do")//直接填访问路径
案例:实现登录
第二种方法:通过继承HttpServlet
此方法较上面的方法不需要.xml 也不需要强转 减少了一定的java代码
MyServlet.java
package com.zking.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.util.concurrent.Executor;
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/test.do")//直接填访问路径
public class MyServlet extends HttpServlet{
//不同的请求方式:
//doGet :专门处理get请求
//doPos:专门处理post请求
//xx [get]
//location.href='baidu.jsp' [get]
//表单是get?post [默认是get 可改为post]
@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 {
req.setCharacterEncoding("utf-8");
//取用户数据
String username=req.getParameter("username");
String password=req.getParameter("password");
resp.setCharacterEncoding("gb2312");
//支持中文的编码:【utf-8】【gb2312】【big5】
//通过响应对象获取输出对象
PrintWriter out = resp.getWriter();
//取session通过请求对象
HttpSession session = req.getSession();
//取application 通过请求对象
ServletContext application = req.getServletContext();
//走数据库
if("aa".equals(username)&&"123".equals(password)) {
//登录成功
out.print("登录成功");
}else {
//登录失败
out.print("登录失败");
}
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%--
传统的开发模式:配置式开发
注解式开发 @注解
--%>
效果如下:
今天的分享就到这里结束啦是✌
以上就是关于 servlet基本使用的一些内容📖
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)