JavaWeb servlet的使用

编程入门 行业动态 更新时间:2024-10-07 06:38:51

<a href=https://www.elefans.com/category/jswz/34/1769548.html style=JavaWeb servlet的使用"/>

JavaWeb servlet的使用

在jsp文件中没有java代码我们才算是学完啦,从EL表达式和JSTL标签,在减少在login.jsp和index.jsp中的java代码,而今天的学习是让在jsp中彻底没有java代码,原本写在doLogin.jsp做登录判断的java代码,我们不在写在jsp文件中了,而是将java代码写在java文件中,今天开始我们的新的知识啦,servlet的使用。


目录

一.servlet是什么?

二.servlet的作用

三.使用servlet接收用户发来的请求

1.实现servlet接口

2.配置路径

3.继承servlet


一.servlet是什么?

 servlet是java编写的服务器端的程序,运行在web服务器中。


二.servlet的作用

1.接收用户端发来的请求

2.调用其他java程序来处理请求

3.将处理结果,返回到服务器中


三.使用servlet接收用户发来的请求

  • 首先我们不在需要doLogin.jsp文件,在java文件下方创建一个包名为com.xxx.servlet,该下方的类为LoginSerblet。

1.实现servlet接口

实现servlet接口的话,我们需要把servlet中的方法重写,会得到五个方法。

初始化:当请求第一次进入servlet就会调用该方法。

  @Override
public void init(ServletConfig arg0) throws ServletException {//第一次进来:当请求第一次进入servlet就会调用该方法System.out.println("我初始化啦");
}

服务: 代码都是写在该方法中

/*** 服务*/@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {}

销毁:销毁的情况分为:

                            1.服务器关闭
                            2.这个类被修改啦

  @Overridepublic void destroy() {//销毁的情况分为:1.服务器关闭//           2.这个类被修改啦System.out.println("我销毁啦");}

得到配置:

  /*** 得到配置*/@Overridepublic ServletConfig getServletConfig() {return null;}

得到信息:

 @Overridepublic String getServletInfo() {return null;}
  • 实现servlet的运用:该代码是替代了原本的login.jsp文件,在该类中和doLogin.jsp的接收用户发来的请求一样。

     代码如下,代码详细讲解

package com.yjx.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.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("我初始化啦");
}/*** 服务*/@Overridepublic 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文件中配置/*** 销毁*/@Overridepublic void destroy() {//销毁的情况分为:1.服务器关闭//           2.这个类被修改啦System.out.println("我销毁啦");}/*** 得到配置*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 得到信息*/@Overridepublic String getServletInfo() {return null;}}

2.配置路径

我们配置路径在web.xml中配置servlet的访问路径,通过配置的路径访问,代码如下。

注:配置以后记得重启服务器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="" xmlns="" xsi:schemaLocation=" .xsd" id="WebApp_ID" version="4.0"><display-name>JavaWeb20</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><!--如果修改了这个 一定要重启服务器--><!--1.配置servlet--><servlet><!--给它取一个名字--><servlet-name>one</servlet-name><!--servlet-class需要填上类的全路径--><servlet-class>com.yjx.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>

3.继承servlet

大家可以看到实现servlet的写法会更加复杂,而我们去继承servlet会更简单,也是比较推荐大家使用继承来写。

  •  当我们继承了servlet要将doGet和doPost两个方法重写。
  • doGet方法中专门处理get请求,doPost方法中专门处理post请求。我们可以在doGet方法中调用doPost方法,这样字就不需要写两遍了,就算是get请求也很进入到doPost方法中。
  • 在这里我们不在需要像实现一样那么麻烦的去配置路径,只需要@WebServlet("/test.do") 这样一串代码,然后通过该路径访问,在该里面需要加斜杠,在表单提交时在action输入给servlet配置的路径的名字,但是去掉斜杠。

代码如下:

package com.yjx.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@SuppressWarnings("all")
@WebServlet("/test.do") //直接填访问路径
public class MyServlet extends HttpServlet{//使用继承会更加简便一些//doGet:专门处理get请求//doPost:专门处理post请求//我们目前给大家讲过的只有表单有post请求//一般默认为get请求但是我们可以设置@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//在该方法中调用doPost方法,当进入到get请求时,直接到doPost方法中doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");//获取到值String name=req.getParameter("username");String pwd=req.getParameter("pwd");resp.setCharacterEncoding("gb2312");PrintWriter out=resp.getWriter();//进行匹配if("zking".equals(name)&&"zking123".equals(pwd)) {out.print("登陆成功"); }else {out.print("登录失败");}}
}

login.jsp代码如下

<%@ 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><!-- 这里输入给servlet配置的路径的名字 --><form action="test.do"><p><input name="username"></p><p><input name="pwd"></p><button>登录</button></form>
</body>
</html>

今天的学习就到这路啦,大家看下代码,代码中都有详细注解。

更多推荐

JavaWeb servlet的使用

本文发布于:2024-02-28 05:14:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768476.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:JavaWeb   servlet

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!