新手简单看懂Servlet里面的web.xml配置

news/2024/11/30 8:01:35/

背景:

ecplise+tomcat+servlet

我们在学习servlet时候,因为前面基础没学好,导致servlet看不懂,比如笔者当时就是servlet的web.xml看不懂,如果我们能先看懂web.xml,知道前端访问哪个接口,调用哪个servlet,至少就能从宏观上了解项目,对项目有一定促进作用本文的目标在于使新手尽量简单看懂前端请求和web.xml中的配置有啥关系

整体项目介绍链接如下:

Servlet技术实现服务端,Android平台作为客户端,实现一个个人店铺_zew1040994588的博客-CSDN博客

登录例子讲解:

项目整体目录:

后端登录接口demo:

这里我们不关注具体代码内容咋写的,只关注他和web.xml有什么关系!

这里是userLoign.java里面的内容:
package servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import common.User;
import dao.UserDao;
import net.sf.json.JSONObject;
import utils.JsonObjectWeb;
import utils.JsonResultUtil;public class userLogin extends HttpServlet {protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//0、解决返回中文乱码问题resp.setCharacterEncoding("UTF-8");JSONObject web_dict = JsonObjectWeb.getJsonInfoDict(req);String username = web_dict.getString("username");String password = web_dict.getString("password");User user = new User();//创建user对象user.setUsername(username);user.setPassword(password);/** 这里需要查询数据库是否重名,若有重名则不允许插入,返回不同状态码* */int flag = 0;UserDao dao = new UserDao();User login_user = null;try {login_user = dao.login(username,password);if(login_user != null) {int user_id = login_user.id.intValue();JSONObject data_dict = new JSONObject();data_dict.put("user_id", user_id);JSONObject json = JsonResultUtil.getJson(200,data_dict, "登录成功");PrintWriter writer = resp.getWriter();	//这里是返回jsonwriter.print(json);flag = -1;}} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}if (flag == 0) {JSONObject json = JsonResultUtil.getJson(1002, "登录失败");PrintWriter writer = resp.getWriter();	//这里是返回jsonwriter.print(json);}}
}

后端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_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>shop_sys2</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><servlet-name>user_login</servlet-name><servlet-class>servlet.userLogin</servlet-class></servlet><servlet-mapping><servlet-name>user_login</servlet-name><!-- 登录 --><url-pattern>/user/login</url-pattern></servlet-mapping><servlet><servlet-name>user_register</servlet-name><servlet-class>servlet.userRegister</servlet-class></servlet><servlet-mapping><servlet-name>user_register</servlet-name><!-- 注册 --><url-pattern>/user/register</url-pattern></servlet-mapping><servlet><servlet-name>user_update_password</servlet-name><servlet-class>servlet.userChange</servlet-class></servlet><servlet-mapping><servlet-name>user_update_password</servlet-name><!-- 注册 --><url-pattern>/user/update/password</url-pattern></servlet-mapping><servlet><servlet-name>product_view_all</servlet-name><servlet-class>servlet.productView</servlet-class></servlet><servlet-mapping><servlet-name>product_view_all</servlet-name><!-- 展示所有商品 --><url-pattern>/product/view/all</url-pattern></servlet-mapping>  <servlet><servlet-name>cart_view</servlet-name><servlet-class>servlet.cartView</servlet-class></servlet><servlet-mapping><servlet-name>cart_view</servlet-name><!-- 显示用户购物车 --><url-pattern>/cart/view</url-pattern></servlet-mapping> <servlet><servlet-name>product_add_cart</servlet-name><servlet-class>servlet.cartAdd</servlet-class></servlet><servlet-mapping><servlet-name>product_add_cart</servlet-name><!-- 添加商品到购物车 --><url-pattern>/product/add/cart</url-pattern></servlet-mapping> <servlet><servlet-name>product_delete_cart</servlet-name><servlet-class>servlet.cartDelete</servlet-class></servlet><servlet-mapping><servlet-name>product_delete_cart</servlet-name><!-- 将商品从购物车中删除 --><url-pattern>/product/delete/cart</url-pattern></servlet-mapping> <servlet><servlet-name>cart_settlement</servlet-name><servlet-class>servlet.cartSettlement</servlet-class></servlet><servlet-mapping><servlet-name>cart_settlement</servlet-name><!-- 购物车页面对商品进行结算 --><url-pattern>/cart/settlement</url-pattern></servlet-mapping> <servlet><servlet-name>view_orders</servlet-name><servlet-class>servlet.orderView</servlet-class></servlet><servlet-mapping><servlet-name>view_orders</servlet-name><!-- 查看所有订单 --><url-pattern>/view/orders</url-pattern></servlet-mapping> <servlet><servlet-name>product_purchase</servlet-name><servlet-class>servlet.productPurchase</servlet-class></servlet><servlet-mapping><servlet-name>product_purchase</servlet-name><!-- 商品页面进行直接购买 --><url-pattern>/product/purchase</url-pattern></servlet-mapping> </web-app>

前端登录页面:

 前端界面调用后端的接口:

接口名为:127.0.0.1:8080/shop_sys2/user/login

 逻辑讲解:

1-先配置 <servlet></servlet>里面的内容,再配置<servlet-mapping></servlet-mapping>里面的内容。

2-<servlet></servlet>这个配置相当于是绑定userLogin.java,

而在userLogin.java中我们写的void doPost(省略形参)具体是后端预备用来处理前端以Post方式请求127.0.0.1:8080/shop_sys2/user/login时所编写的后台逻辑,比如查询数据库看看用户能否登录之类的【当然也可以处理Get请求,我们没写处理Get的】。而怎么把这个servlet让前端能够访问的到,这就是web.xml的作用所在了。当然有很多种处理方式,web.xml是最基础的一种。后期熟练可以用注解。

3-  <servlet-mapping>  </servlet-mapping>里面的内容配置

就是应对前端请求127.0.0.1:8080/shop_sys2/user/login的Post方式,

3.1-通过<servlet-mapping></servlet-mapping>中的<url-pattern>/user/login</url-pattern>让后台识别到前端发送了127.0.0.1:8080/shop_sys2/user/login这个请求

此后根据<servlet-name>user_login</servlet-name>获取到的user_login,去找到   <servlet></servlet>内容中的<servlet-name>user_login</servlet-name>,

让逻辑能够进入到对应的servlet去处理【这一步是由<servlet-class>servlet.userLogin</servlet-class>里面的内容servlet.userLogin来决定的!!!!】,再之后就是具体的userLogin.java的void doPost(省略形参)里面的查询数据库之类的了。

这里文字叙述若觉得不理解,可以看看下面的图,兴许你就理解了。

   <servlet><servlet-name>user_login</servlet-name><servlet-class>servlet.userLogin</servlet-class></servlet><servlet-mapping><servlet-name>user_login</servlet-name><!-- 登录 --><url-pattern>/user/login</url-pattern></servlet-mapping>


http://www.ppmy.cn/news/691840.html

相关文章

JavaScript的try-catch-finally异常处理机制--详解

JavaScript 提供了异常处理机制&#xff0c;通过 try-catch-finally 语句块来捕获和处理异常。以下是对该机制的详细解释和示例&#xff1a; 1. try 块&#xff1a; try 块用于包裹可能会产生异常的代码块。在 try 块内&#xff0c;您可以放置任何可能引发异常的代码。 2. ca…

佳能打印机手机显示未连接服务器,安装佳能LBP1210打印机 提示RPC服务器不可用,该怎办/...

楼主应对情况做出更加具体的描述&#xff0c;以待更好地解决此问题&#xff0c;下面是一般情况下解决此类问题的方法&#xff0c;您可以尝试看能不能解决&#xff1a; 症状 在执行下列任一基于服务器的任务时&#xff0c;可能收到“RPC server is unavailable(RPC服务器不可用)…

佳能hdr_佳能650D支持HDR吗

佳能650D支持HDR功能&#xff0c;原理是在连续拍摄曝光不足、曝光标准、曝光过度3张图像&#xff0c;最终合成一张宽广动态范围的照片。 佳能650D是一款APS画幅单反数码相机&#xff0c;采用新开发的约1800万有效像素CMOS图像感应器&#xff0c;在约22.314.9毫米的有效空间内合…

最长回文串

Manacher 问题 寻找字符串中的最长回文串 传统做法 字符串首字符前加一个特殊字符 ‘#’ 末尾字符加一个特殊字符 ‘#’ 相邻字符间也加上特殊字符 ‘#’ 遍历字符串&#xff0c;除特殊字符外&#xff0c;以每个字符作为回文字符串的中心向外扩张 思考 很明显这种做法的…

Java程序所在机器性能监控

Java程序所在机器性能监控 背景 问题单&#xff1a;程序故障&#xff08;OOM、网络不通、操作卡顿&#xff09;问题单&#xff1a;服务连接不上需求 1、监控本地机器性能 告警日志UI2、监控服务接口服务 告警日志UI方案 固定间隔获取机器网络CPU内存数据设置阈值&#xff0c;告…

探探提醒对方账号异常_我告诉你探探账号异常不能回复消息怎么办

解决方法&#xff1a;有多种原因&#xff0c;如果是账号被封&#xff0c;无法回复短信&#xff1b;如果是网络异常导致&#xff0c;建议切换网络再回复&#xff1b;如果是软件出现bug&#xff0c;可以进行反馈&#xff0c;在探探3.7.5版本中&#xff0c;打开软件&#xff0c;点…

探探提醒对方账号异常_探探账号异常暂时不能回复你的消息怎么回事?如何解封...

探探是一款不错的社交app&#xff0c;有时候大家给朋友发送消息时&#xff0c;显示对方账号异常暂时不能回复消息&#xff0c;那么探探账号异常是怎么回事呢&#xff1f;探探账号封禁怎么办呢&#xff1f;下面小编就为大家带来探探app账号异常的相关介绍&#xff0c;感兴趣的朋…

探探引流一天加粉1000+微商引流方法讨论

探探引流一天加粉1000微商引流方法讨论 关于探探引流&#xff0c;已经见怪不怪&#xff0c;但是最近封杀实在严重&#xff0c;软改必死&#xff0c;硬改也不见得活&#xff0c;但是我们经过摸索还是有自己的一套活号方法&#xff0c;现在说下几个新手应该避开的雷区 1.软改 所…