Java小菜鸡之servlet介绍

本文详细讲解了新版Servlet的简化配置,以及与SpringMVC的异同,并通过一个ArticleServlet实例演示了doGet和doPost方法在处理GET和POST请求中的应用,涉及JSON数据的处理。
摘要由CSDN通过智能技术生成

以前不管是servlet还struts,都少不了xml配置文件,现在servlet先进到什么程度,我认为很接近springMVC了。最新版的servlet是6.1,这可以从tomcat的官网上获取Apache Tomcat® - Which Version Do I Want?icon-default.png?t=N7T8https://tomcat.apache.org/whichversion.html新版的servlet很简洁,没有过多的配置文件,@WebServlet(name="ApiArticleServlet", urlPatterns="/api/article/*")是核心,定义了访问路径,同时一般用到的方法有doGet和doPost

doGet 我一般是用来做页面跳转doPost一般是用来做方法,以下是一个简单的servlet例子,

在doGet方法中,request.getRequestDispatcher很重要,用来跳转比如文章的列表页则可以articleList.jsp,String p0 = mapping.getMatchValue();表示*号后面的参数

同样在doPost方法中String p0 = mapping.getMatchValue();表示*号后面的参数,可以用这个区分不同的方法,比如list,update,del,save。

当然servlet本身还自带一个doPut,doDelete等不常用的方法,一般都是结合doPost加上String p0 = mapping.getMatchValue();来代替就够了。

package net.mbzj.servlet.api;

import java.io.IOException;
import java.util.List;

import com.alibaba.fastjson2.JSONObject;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletMapping;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import net.mbzj.bean.Category;
import net.mbzj.bean.Title;
import net.mbzj.dao.ArticleDao;
import net.mbzj.dao.CategoryDao;
import net.mbzj.utils.AjaxUtils;
import net.mbzj.utils.Criteria;
import net.mbzj.utils.StringUtils;

@WebServlet(name="ApiArticleServlet", urlPatterns="/api/article/*")
public class ArticleServlet extends HttpServlet{

	/**
	 * 文章接口
	 */
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
		HttpServletMapping mapping = request.getHttpServletMapping();
		String p0 = mapping.getMatchValue();
		try {
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
            //映射jsp文件
            request.getRequestDispatcher("/WEB-INF/jsp/"+s+".jsp").forward(request, response);

        }
	}
	public synchronized  void  doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
		
		HttpServletMapping mapping = request.getHttpServletMapping();
		String p0 = mapping.getMatchValue();
		JSONObject jo = new JSONObject();
		try {
			
			if(StringUtils.isNotEmpty(p0)&&p0.equals("list")) {
				
				String page = request.getParameter("page");
				String limit = request.getParameter("limit");
				String title = request.getParameter("title");
				String shortTitle = request.getParameter("shortTitle");
				String categoryId = request.getParameter("categoryId");
				String attr = request.getParameter("attr");
				String status = request.getParameter("status");
				Category category = CategoryDao.findById(Long.valueOf(categoryId));
				Criteria cri = new Criteria();
				if(page!=null) {
					cri.setPageNo(Integer.valueOf(page));
				}else {
					cri.setPageNo(Integer.valueOf(1));
				}
				if(limit!=null) {
					cri.setPageSize(Integer.valueOf(limit));
				}else {
					cri.setPageSize(10);
				}
				if(StringUtils.isNotEmpty(title)) {
					cri.like("title", title);
				}
				if(StringUtils.isNotEmpty(shortTitle)) {
					cri.like("shortTitle", shortTitle);
				}
				if(StringUtils.isNotEmpty(categoryId)) {
					cri.eq("categoryId", categoryId);
				}
				if(StringUtils.isNotEmpty(attr)) {
					cri.beforeLike("attr", attr);
				}
				if(StringUtils.isNotEmpty(status)) {
					cri.eq("status", status);
				}
				cri.eq("siteId", category.getSiteId());
				cri.setOrderBy("createTime desc");
				//文章列表不查text字段
				List<Title> list = ArticleDao.page(cri);
				jo.put("code", 0);
				jo.put("data", list);
				jo.put("count",ArticleDao.countTotal(cri));
			}
			
		}catch(Exception e) {
			jo.put("code",-1);
			jo.put("msg", StringUtils.MSG_ERROR);
			e.printStackTrace();
		}finally {
			AjaxUtils.printJson(response, jo.toJSONString());
		}
		
	}
}

以下是文件详情的例子,可以有很好的Reset风格,其中URL:/article/view/231 ,

231就是对应String p0 = mapping.getMatchValue();拿到的值

爱心树代码实现爱心表白树源码(免费分享)html+js+css - 模板之家爱心树代码实现爱心表白树源码(免费分享)html+js+css,我知道我不会甜言蜜语,但是我会用行动证明一切icon-default.png?t=N7T8https://www.mbzj.net/article/view/231

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值