您的位置:首页 > 其它

不使用框架来发送数据到服务器后台

2017-03-26 15:27 246 查看

背景

因为这学期学校有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 {
//内容省略
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: