servlet分为controler层


package com.bcu.servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bcu.edu.bean.Hotel_rxh;




/**
 * Servlet implementation class HotelServlet_rxh
 */
@WebServlet("/HotelServlet_rxh")
public class HotelServlet_rxh extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private Map<String,Hotel_rxh> hotels=new HashMap<>();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HotelServlet_rxh() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");
        String cmd=request.getParameter("cmd");
        if("queryHotels".equals(cmd)) {
            request.setAttribute("hotels", hotels);
            request.getRequestDispatcher("hotel-list_rxh.jsp").forward(request, response);
        }else  if("insertHotel".equals(cmd)) {
            String id=request.getParameter("id");
            String name=request.getParameter("name");
            String city=request.getParameter("city");
            String type=request.getParameter("type");
            String star=request.getParameter("star");
            String status=request.getParameter("checkbox");
            String intime=request.getParameter("intime");
            String outtime=request.getParameter("outtime");
            String address=request.getParameter("address");
            String introduction=request.getParameter("introduction");
            String number=request.getParameter("number");
            
            Hotel_rxh hotel=new Hotel_rxh(id,name,city,type,star,status,intime,outtime,address,introduction,number);
            hotels.put(id,hotel);
            
            response.sendRedirect("HotelServlet_rxh?cmd=queryHotels");
        }else if("getHotelUpdate".equals(cmd)) {
            String id=request.getParameter("id");
            Hotel_rxh hotel=hotels.get(id);
            
            request.setAttribute("hotel", hotel);
            request.getRequestDispatcher("hotel-update_rxh.jsp").forward(request, response);    
        }
        else if("updateHotel".equals(cmd)) {
            String id=request.getParameter("id");
            String name=request.getParameter("name");
            String city=request.getParameter("city");
            String type=request.getParameter("type");
            String star=request.getParameter("star");
            String status=request.getParameter("status");
            String intime=request.getParameter("intime");
            String outtime=request.getParameter("outtime");
            String address=request.getParameter("address");
            String introduction=request.getParameter("introduction");
            String number=request.getParameter("number");
            
            Hotel_rxh hotel=hotels.get(id);
            hotel.setName(name);
            hotel.setCity(city);
            hotel.setType(type);
            hotel.setStar(star);
            hotel.setStatus(status);
            hotel.setIntime(intime);
            hotel.setOuttime(outtime);
            hotel.setAddress(address);
            hotel.setIntroduction(introduction);
            hotel.setNumber(number);
            
            response.sendRedirect("HotelServlet_rxh?cmd=queryhotels");
        }else if("deleteHotel".equals(cmd)) {
            String id=request.getParameter("id");
            hotels.remove(id);
            
            response.sendRedirect("HotelServlet_rxh?cmd=queryHotels");
        }else if("orderHotel".equals(cmd)) {  
            request.setAttribute("hotels", hotels);
            request.getRequestDispatcher("hotel-list_rxh.jsp").forward(request, response);
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

应该说servlet就是controler层

  • 你可以参考下这篇文章:Servlet修改
  • 除此之外, 这篇博客: servlet中的 案例1: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 创建一个Servlet,理解Servlet的生命周期。

    package com.bailiban.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    /*
     * Servlet的生命周期
     */
    public class Demo2Servlet implements Servlet {
    
    	/*
    	 * 初始化方法
    	 * 在servlet创建时执行,只会执行一次
    	 */
    	@Override
    	public void init(ServletConfig config) throws ServletException {
    		
    		System.out.println("我出生了...");
    		
    	}
    	/*
    	 * 提供服务的方法  ,每访问一次servlet就会执行一次  多次执行
    	 */
    	@Override
    	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    
    		System.out.println("我响应请求了...");
    	}
    	/*
    	 * 销毁方法
    	 * 在服务器正常关闭执行   只执行一次
    	 */
    	@Override
    	public void destroy() {
    
    		System.out.println("我挂了...  ");
    	}
    	@Override
    	public ServletConfig getServletConfig() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public String getServletInfo() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    在MVC架构中,servlet应按照分层模式设计,将视图、控制器和模型分成单独的层,从而获得更好的代码组织和文档可读性。其中,controller层负责接收来自视图层的请求,并将请求传递到模型层进行处理,然后将处理结果返回给视图层。下面就是一种常见的servlet实现MVC架构的方式,特别是controller层的实现:

    1. 首先,需要定义一个servlet类作为controller层,并实现doGet和doPost等HTTP方法,用于监听来自浏览器的请求:
    @WebServlet("/userController")
    public class UserController extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException {
            process(request, response);
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException {
            process(request, response);
        }
    
        protected void process(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException {
            // 在这里接收和处理请求的逻辑
            // 比如根据请求参数选择调用哪个业务方法等等
        }
    
    }
    
    1. 其次,在process方法中可以根据请求参数来选择调用相应的业务方法,处理模型层的数据并返回结果给视图层。这里以用户登录功能为例,假设模型层UserService类已经实现了用户信息的验证:
    protected void process(HttpServletRequest request, HttpServletResponse response) 
                throws ServletException, IOException {
            String action = request.getParameter("action");
            if ("login".equals(action)) {
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                UserService userService = new UserService();
                boolean result = userService.isValidUser(username, password);
                if (result) {
                    // 登录成功之后的逻辑
                } else {
                    // 登录失败之后的逻辑
                }
            } else {
                // 其他请求的逻辑
            }
        }
    
    1. 在模型层中,UserService类用于处理用户信息、数据验证等具体的业务处理。例如isValidUser方法的实现可以是从数据库或者其他存储系统中取出用户信息进行验证:
    public class UserService {
    
        public boolean isValidUser(String username, String password) {
            // 从数据库中获取用户信息
            // 判断是否存在该用户
            // 根据用户名和密码进行验证
            return true; // 如果验证通过,则返回true,否则返回false
        }
    
    }
    

    这就是一个基本的servlet实现MVC架构的方式,其中controller层负责接收请求和分发业务逻辑,模型层负责处理具体的业务,视图层负责展示数据和与用户交互。在具体的应用中,还需要使用其他技术如JSP、EL表达式等来设计视图层的实现。