Servelt总结

## 什么是Servlet?

宏观定义:sun公司制定的用java编写的Web应用程序的规范技术
微观定义:一个继承自HttpServlet ,部署在WebServer可以处理客户端请求的java类(一次请求就是一个servlet)
Servlet与java普通类的比较
在这里插入图片描述
servlet继承结构
在这里插入图片描述
servlet的生命周期
在这里插入图片描述
在上述各个阶段,只有服务是调用多次的,其余的方法只调用一次。
servelt的service()方法调用机制
一般做过BS项目的人都知道,客户端进行请求访问的时候一般会写 method = “get/post”,用来告诉servlet到底调用那个方法去请求响应,其实这个功能是由service()实现的。service方法得到请求的名称,然后调相应的方法。如果想要重写service()方法,一定记得去掉super(),不然机制回自己向父类调service()方法。

baseSer重写了service方法,实现一个Servlet处理多个请求的需求


	String  methodName = req.getParameter("method");
	Method method = this.getClass().getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
				//调用方法
				String  strReturn  = (String )method.invoke(this, req,resp);
				String  pre = "redirect:";
				
				if(strReturn.startsWith("redirect:")) {
					//substring()方法的下标是从0开始   所以不应该+1
					String  path = strReturn.substring(pre.length());
					resp.sendRedirect(req.getContextPath() + path);
				}else {
					req.getRequestDispatcher(strReturn).forward(req, resp);
				}

下面的类继承baseSer


/**
 * Servlet implementation class StudentSer2
 */
@WebServlet("/jsp/StudentSer2")
public class StudentSer2 extends baseSer {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public StudentSer2() {
        super();
        // TODO Auto-generated constructor stub
    }
    public String list(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		StuDao stuDao = new StuDao();
		List<Student> list = stuDao.list();
		for (Student student : list) {
			System.out.println(student);
		}
		//
		request.setAttribute("list", list);
		
		//返回值要准确 不然 地址栏的地址是错误的 会404  
		return "/jsp/list.jsp";   //在baseSer 里面得到返回值 
		
	}
	public String save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		String age = request.getParameter("age");
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		System.out.println(id + age);
		String sex = request.getParameter("sex");
		
		Student student  = new Student(Integer.parseInt(id), name, Integer.parseInt(age), sex);
		System.out.println(student);
		StuDao stuDao = new StuDao();
		stuDao.save(student);
		
		//重定向
		//redirect:/StudentSer2?method=list   /是根目录    应该是jsp下 
		return ("redirect:/jsp/StudentSer2?method=list");
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值