本章源码: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字符串后返回给用户。
明天,就可以叫上小范妹子,分工协作,开始研发。
嗯,自己竟然如此优秀,进步之快令人发指。
努力后的夜晚往往是酐睡。
还有什么,比奋斗进取的日子更美丽呢。
共同学习,写下你的评论
评论加载中...
作者其他优质文章