毛哥的快乐生活(21) 让Servlet理解用户的需求

本章源码:Github

程序是干啥的

还记得最开始的程序吗,无非是输出。

System.out.println("Hello World");

此时用户的请求只有一个目标,就是这个程序,输出也是固定的内容。

但是在现实世界中,用户的请求,可能是很复杂的。而用户期望得到的结果,也是个性化的。个性化的结果就来自于个性化的要求。

所以程序就是,接收输入,理解输入,计算结果,输出结果。

OK,如下就是:

public static void main(String[] args) {
		//1获取输入
        Scanner input=new Scanner(System.in);
        double num1,num2;
        System.out.print("请输入第1个数字:");
        num1=input.nextDouble();
        System.out.print("请输入第2个数字:");
        num2=input.nextDouble();
        //2理解输入
        //..有什么好理解的,两个数字
        //3计算结果
        double sum=num1+num2;
        //4输出结果
        System.out.println(sum);
        input.close();    //关闭input
	}

Servlet是干啥的

Servlet干的事情比较专业一点,就是专门接收用户通过浏览器发出的请求,然后返回结果的。

OK,之前已经了解如何输出了,那么Servlet如何获取用户的请求信息呢。

毛哥仔细观察了这个方法:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		PrintWriter out = resp.getWriter();//从响应对象里面获取一个PrintWriter,有点像打字机
		out.println("<div>In the futurem, you will thank youself for the fighting today</div>");//英语不错
	}

resp是用来向浏览器输出的,那req是干嘛的?req是HttpServletRequest类型的对象,不就是代表请求吗。然后输入req.(会自动提示该对象具备的方法)如下图:

图片描述

果然有一个req.getParameter方法,应该就是获取浏览器提交的请求参数的。

浏览器的请求参数从何而来

终于走到问题的关键了,用户通过浏览器中的动态网页发起请求,但是参数怎么传递给Servlet呢。

不像Java语言,可以将参数放在函数里。此时就要从日常的观察中得出一些提示了。

毛哥百度了下servlet,点击百度一下之后,发现浏览器地址栏变为下面的东西,发现wd=servlet了吗?

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=3&tn=98012088_10_dg&wd=sevlet&oq=servlet&rsv_pq=c5be70fd0005b075&rsv_t=8f21LcL5cIP3KHsBajo1fL08zvtjo0oCDGGUtuVfgwG1NUJXxiEZM9Dlg8grqf1ilmc0nXk&rqlang=cn&rsv_enter=0

嗯,再试下html,发现浏览器地址栏变为下面东西,发现wd=html了吗

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=3&tn=98012088_10_dg&wd=html&oq=servlet&rsv_pq=e2eafc89000558b9&rsv_t=f6e6aCwwSJVheOfYFqrwi7Kia3heDSEtbBJhkKE0kujl0mu9Jnn7%2FC2elkFCpwxAJPOsBFU&rqlang=cn&rsv_enter=0&rsv_sug3=16&rsv_sug1=15&rsv_sug7=100&rsv_sug2=0&inputT=1522&rsv_sug4=1522

也就是说,浏览器可以通过在请求地址后面添加参数,将参数传递给动态网页的处理程序。

尝试传递参数

我们在上一章的NoticeSite下面新增一个ParamterReceiveServlet,项目结构如图:

图片描述

代码如下:

//测试接收参数的Servlet
@WebServlet("/ParamterReceiveServlet")
public class ParamterReceiveServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取一个名字叫name的浏览器输入参数
		String input=req.getParameter("name");
		String output="你好:"+input;
		//输出
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		out.println(output);
	}
}

重启服务器,地址栏输入:http://localhost:8080/NoticeSite/ParamterReceiveServlet?name=maoge,结果如下:

图片描述

毛哥的畅想

大吉大利,今晚吃鸡!

好像眼前所有的障碍都扫除了啊。

现在可以用Servlet接收用户的输入,然后通过Java语言动态组装html字符串后返回给用户。

明天,就可以叫上小范妹子,分工协作,开始研发。

嗯,自己竟然如此优秀,进步之快令人发指。

努力后的夜晚往往是酐睡。

还有什么,比奋斗进取的日子更美丽呢。


如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页