不使用框架来发送数据到服务器后台
来源:互联网 发布:云软件多少钱呢 编辑:程序博客网 时间:2024/05/17 08:52
背景
因为这学期学校有JavaEE的课,第一个大作业就是不使用框架来写一个管理系统。昨晚开始通宵写到今天早上八点半,还是学了很多东西的。
系统需求
这里为了简单,就向服务器发送一个表单吧!使用两种提交方式,一种是使用表单提交,另外一种是ajax提交。
开发工具:eclipse
服务器:tomcat
基本架构搭建
首先新建一个动态的Web工程。
开始写前台页面,代码如下:
<form action="user/adduser" method="post"> 用户姓名:<input type="text" name="username"/><br/><br/> 用户密码:<input type="password" name="password"/><br/><br/> <input type="submit" value="新增" /></form>
有一点html基础的人都能看懂这个代码,就是两个输入框,一个新增按钮。
表单的提交地址是 adduser
,提交方式为 post
。
然后写一个后台的控制器,取名就叫UserController
:
import java.io.IOException;import java.util.Date;import java.util.Map;import java.util.Set;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UserController extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { //处理前台传过来的数据 } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); }}
注意:如果没有servlet包,记得在build path那里加入tomcat中相关的包。
最后就是怎样把前后台关联起来呢?
这个就叫在 web.xml 中进行配置了!
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" id="WebApp_ID" version="2.5"> <!--配置servlet --> <servlet> <servlet-name>UserController</servlet-name> <servlet-class>com.user.controller.UserController </servlet-class> </servlet> <servlet-mapping> <servlet-name>UserController</servlet-name> <url-pattern>/user/adduser</url-pattern> </servlet-mapping></web-app>
上面就将前后台关联起来了!
我们点击一下前台页面的按钮,发现请求连通了:
开始编程
前台form表单提交数据
因为是表单提交,所以点击一下按钮就把数据传给后台了。
后台获取数据
那么后台要怎样获取数据呢?答案就是从request
中获取了。
那么要怎样获取呢,这里我封装了一个工具类,将request
映射成一个Map。
package com.user.utils;import java.io.UnsupportedEncodingException;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;/** * 作者:白芷 * 时间:2017/03/26 * 功能:将request装转化为Map键值对 * */public class CastRequestToMap { public static Map castRequestToMap(HttpServletRequest request){ try { request.setCharacterEncoding("UTF-8"); //设置编码 } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } Map map = new HashMap(); Enumeration paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); String[] paramValues = request.getParameterValues(paramName); if (paramValues.length == 1) { String paramValue = paramValues[0]; if (paramValue.length() != 0) { map.put(paramName, paramValue); } } } return map; }}
这里你把 request
传过去就可以获取一个map了。
那我们来使用这个工具类来打印一下前台传过来的数据:
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { //处理前台传过来的数据 Map map=CastRequestToMap.castRequestToMap(request); Set<Map.Entry<String, String>> set = map.entrySet(); System.out.println("------------------------------"); for (Map.Entry entry : set) { System.out.println(entry.getKey() + ":" + entry.getValue()); } System.out.println("------------------------------"); }
前台输入 张三 123456
后台打印:
表明我们的前后台数据传输成功!接下来你就可以对你的数据进行你想要的处理了!
2017/03/27日添加
看到一个朋友舍弃了 web.xml,改用注解来实现寻找路径。
上面的控制器程序就可以加上注解,如下:
@WebServlet(urlPatterns="/user/adduser")public class UserController extends HttpServlet { //内容省略}
2 0
- 不使用框架来发送数据到服务器后台
- BlackBerry通过HttpConnection来发送数据到Web服务器
- 发送数据到服务器
- 发送XML数据到服务器
- 发送JSON数据到服务器
- 建立XML来发送到服务器。
- 以自己的电脑作为服务器,Android端通过JSON来传递数据到后台
- Android之使用HttpPost提交数据到服务器(Android手机客户端和后台服务器交互)
- HttpClient 使用get方式发送数据到服务器并下载服务器文件
- HttpClient 使用get方式发送数据到服务器并下载服务器文件
- Post方式发送UIImage数据到服务器
- Post方式发送UIImage数据到服务器 .
- Post方式发送UIImage数据到服务器
- android,post发送数据到服务器
- android, httpclient,get,发送数据到服务器
- android,HttpPost发送数据到服务器
- Android利用JSON发送数据到服务器
- Android利用JSON发送数据到服务器
- 28. Implement strStr()
- Struts配置文件struts.xml详解
- 跨域问题
- vb.net 教程 5-10 Graphics类 1
- mongo connections url string 的问题
- 不使用框架来发送数据到服务器后台
- HDU2031 进制转换
- c++ stack 栈
- amd模块定义模式
- 用WinSCP将windows上的内容传递到linux主机上
- 老生常谈之线程与进程
- node的内存控制
- 2017.3.23 考试小结
- 求最大公共子序列的长度