servlet学习

servlet是在tomcat中运行的组件 是用Java编写的服务器端程序 首先生成loginServlet这个类 随后继承自父类httpServlet即可

在这个类中 编写程序

//	@Override
//	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//		String name = req.getParameter("name");
//		String password = req.getParameter("password");
//		System.out.print(name);
//		System.out.print(password);
//	}

从表单获取form的表单值 随后进行打印输出即可

随后在web,xml中进行配置<servlet>和<servlet-mapping>这两个即可 通过<servlet-name>来进行链接

 <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.kevinSwift.Servlet.LoginServlet</servlet-class>
  </servlet>
 <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
要记得在form的action中填写正确的servlet的类名 和method中配置正确的操作 post或者get

 <form action = "<%=request.getContextPath() %>/checkRequest" method = "post">
/后面就是正确的servlet的代码

也可以直接创建一个servlet类 随后在其中进行方法的编写 主要用到的是有doGet方法和doPost这两个方法 在doGet方法中要调用doPost方法 post请求比get请求 安全性更高

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	doPost(request,response);
	}

	/**
		 * The doPost method of the servlet. <br>
		 *
		 * This method is called when a form has its tag value method equals to post.
		 * 
		 * @param request the request send by the client to the server
		 * @param response the response send by the server to the client
		 * @throws ServletException if an error occurred
		 * @throws IOException if an error occurred
		 */
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		if(name == null || password == null){
			request.setAttribute("msg", "用户名或者密码错误");
		}else{
			//进行校验
			String forward = "/01/success.jsp";
			RequestDispatcher rd = request.getRequestDispatcher(forward);
			rd.forward(request, response);
		}
	}

可以通过requestDispatcher这个对象进行转发 就是加载到一个新的界面

一下代码中通过respnse的重定向进行跳转时 是不能传值的 而通过requestDispatcher时是可以进行传值的

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String name = req.getParameter("name");
		String password = req.getParameter("password");
		if(name.equals("cao") && password.equals("kai")){
			//进行请求转发 要注意请求转发只能在同一个项目中进行 而不能跳转到其他的项目中
			//进行页面的跳转 用servlet 但是servlet的跳转是不能带值的  也就是说success.jsp或者error.jsp不能取到值
	String forword = "/01/success.jsp";
			RequestDispatcher rd = req.getRequestDispatcher(forword);
			//进行跳转
			rd.forward(req, resp);
			//而请求的重定向却可以跳转到其他的界面去
		//	resp.sendRedirect(req.getContextPath() + "/01/success.jsp");
		}else{
			//这是页面的重定向
			resp.sendRedirect(req.getContextPath() + "/01/error.jsp");
		}
	}
servlet拦截器 可以在tomcat处理servlet前 进行拦截 从而进行一些配置信息的处理

可以单独创建一个filter 这个类

随后主要应用的是doFilter这个类 在这个中处理业务逻辑

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
 //响应链 若执行的话 就会自动到下一个servlet 或者servlet的过滤器
		// pass the request along the filter chain
System.out.println("开始执行doFilter");
		chain.doFilter(request, response);
System.out.print("结束执行doFilter");
	}
随后在web,xml中进行配置

同样是通过<filter>和<filter-mapping>这两个元素进行配置

 <filter>
    <filter-name>checkFilter</filter-name>
    <filter-class>com.kevinSwift.Servlet.checkFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>checkFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
通过<filter-name>这个来进行关联 这样即可





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值