servlet 介绍


servlet 介绍

> 一般jsp 之负责展现,把数据传给后台
> 这种思想就是mvc
> jsp 只管视图 view
> servlet 后台控制 controller 控制(HTTP)
> m 数据传递对象 model (处理逻辑)

创建模板

自动创建后的脚本

默认继承了HttpServlet

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class EmailServlet
 */
public class EmailServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public EmailServlet() {
        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
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @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);
	}

}

访问路径的设置

一、创建模板后默认会在web.xml中添加访问路径如下:

<?xml version="1.0" encoding="UTF-8"?>

  mavenweb
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
    
    EmailServlet #Servlet的名称
    EmailServlet#Servlet的类路径
    servlet.EmailServlet
  
  
    EmailServlet #Servlet的名称
    /EmailServlet#/url名字(自己起的,不要重复,注意/,不能丢)
  

二、注解方式

 @WebServlet(name ="ActionServlet",urlPatterns = "/Email")

注意:

两种访问路径可以同时存在,同时访问

接收请求的参数

请求:
浏览器访问传递参数test
http://localhost:8081/EmailServlet?test=1
对应代码如下:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//接收请求的参数
		String nameString =request.getParameter("test");
		response.getWriter().append("Served at: ").append(request.getContextPath()).append("TestValue:"+nameString);
	}

页面跳转

请求后跳转到对应的界面

1.将对应的message.jsp拷贝到webapp目录下
2.代码加入

request.getRequestDispatcher("/message.jsp").forward(request, response);

3.访问后即可完成跳转
结果如下:

给跳转界面设置对应的值

如跳转message.jsp
message.jsp内容如下:
我们可以看到需要传的值为message

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


发送结果 ${message}


代码如下:
request.setAttribute("message", nameString);

结果如下:

总体代码:

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//接收请求的参数
		String nameString =request.getParameter("test");
		//设置值
		request.setAttribute("message", nameString);
//		response.getWriter().append("Served at: ").append(request.getContextPath()).append("TestValue:"+nameString);
		//跳转
		request.getRequestDispatcher("/message.jsp").forward(request, response);
	}