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的生命周期。
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;
}
}
在MVC架构中,servlet应按照分层模式设计,将视图、控制器和模型分成单独的层,从而获得更好的代码组织和文档可读性。其中,controller层负责接收来自视图层的请求,并将请求传递到模型层进行处理,然后将处理结果返回给视图层。下面就是一种常见的servlet实现MVC架构的方式,特别是controller层的实现:
@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 {
// 在这里接收和处理请求的逻辑
// 比如根据请求参数选择调用哪个业务方法等等
}
}
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 {
// 其他请求的逻辑
}
}
public class UserService {
public boolean isValidUser(String username, String password) {
// 从数据库中获取用户信息
// 判断是否存在该用户
// 根据用户名和密码进行验证
return true; // 如果验证通过,则返回true,否则返回false
}
}
这就是一个基本的servlet实现MVC架构的方式,其中controller层负责接收请求和分发业务逻辑,模型层负责处理具体的业务,视图层负责展示数据和与用户交互。在具体的应用中,还需要使用其他技术如JSP、EL表达式等来设计视图层的实现。