- 浏览: 959287 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
1.深圳移动无线市民主页
1.我负责的主要是应用管理,账号管理,Tips管理,其中应用管理包括应用新增,应用查询,应用新增里面可以添加
(新增版本(1.0,1.1),推荐指数(只能输入1-3位整数)类型(android,iphone(选择andoird时把软件路径显示,把iphone路径隐藏,否则反之)
-->js style.disply="",block不兼容火狐,none)--->页面震动(30%)),软件路径(request.getSession().getServletContext.getRealPath+File.separator)
软件Logo(实际上保存的是logo的路径),应用查询主要根据软件名称查询,再根据推荐指数,日期倒序排列
2.无线城市接口笔记
// 动态密码接口(解析properties,properties文件保存一段url,再通过InputStream fis = new FileInputStream(path+ConfigFileName);
Io流解析,HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();之后返回路径,最后out.println出去)
@RequestMapping("/dynamicPassword.do")
public void dynamicPassword(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException,
UnsupportedEncodingException {
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String auth = request.getParameter("auth");
String mobile = request.getParameter("mobile");
Properties props = new Properties();
PrintWriter out = null;
try {
String path = this.getClass().getClassLoader().getResource("/")
.getPath();
try {
path = URLDecoder.decode(path, "utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
InputStream fis = new FileInputStream(path+ConfigFileName);
props.load(fis);
Enumeration en = props.propertyNames();
String key = null;
String value = null;
while (en.hasMoreElements()) {
key = (String) en.nextElement();
if (key.equals(dynamicURL)) {
value = props.getProperty(key);
break;
}
}
if (!value.contains("?")) {
value += "?";
}
value += "id=" + id;
value += "&auth=" + auth;
value += "&mobile=" + mobile;
String result = inGet(value);
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
out.println(result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
}
}
}
//软件升级接口
(首先取出用户的imei,电话号码,version(版本),取出用户的版本号,跟服务器上的版本对比,
如果服务器上的版本低于客户版本就升级,
另外可以根据带过来的参数决定是否强制升级,如果是强制升级,result返回0,否则返回1
再用StringBUilder拼凑url,然后out出去)
@RequestMapping("/Upgrade.do")
public String upgrade(HttpServletRequest request,HttpServletResponse response,ModelMap map) throws SQLException {
String imei = (String)request.getParameter("imei");//用户
String mobile = (String)request.getParameter("mobile");//电话号码
String version = (String)request.getParameter("version");//软件版本号
StringBuffer sb= new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
String _version =null;
String force=null;
List<Map<String,String>> list =userDao.queryUserVersion();
if(null != list && list.size()>0)
{
Map versionMap=list.get(0);
force=versionMap.get("FORCE").toString();
int version_1=getVersion(version);
_version="V"+versionMap.get("V")+"R"+versionMap.get("R")+"A"+versionMap.get("A")+"P"+versionMap.get("P");
int version_2=getVersion(_version);
if(version_1>=version_2)
{
sb.append("<upgrade result=\"3\">");
sb.append("<tip>您已经是最新版本了</tip>");
sb.append("</upgrade>");
}
else
{
if(force.equals("0"))
{
sb.append("<upgrade result=\"0\">");
}
else
{
sb.append("<upgrade result=\"1\">");
}
sb.append("<version>"+_version+"</version>");
sb.append("<filesize>"+versionMap.get("FILESIZE")+"</filesize>");
// List<Map<String,String>> url= userDao.queryUserInfo();
sb.append("<updateUrl>"+versionMap.get("URL")+"</updateUrl>");
sb.append("</upgrade>");
}
}
sb.append("</soarsky>");
try {
response.setContentType("text/xml");
OutputStream out =response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
(首先获取带过来的电话号码,电话类型,然后根据参数查询返回List,再遍历list,在拼接url,最后out出去)
// 客户端请求精彩推荐列表
@RequestMapping("/getCommendList.do")
public String getCommendList(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException {
String sofit = (String) request.getParameter("mobile");// 电话号码
String phone_type = (String) request.getParameter("phone_type");
String page = (String) request.getParameter("page");// 开始记录
String count = (String) request.getParameter("count");// 结尾记录
int end = Integer.parseInt(page) * Integer.parseInt(count);
int start = (Integer.parseInt(page) - 1) * Integer.parseInt(count) + 1;
Map lmap = new HashMap();
lmap.put("start", start);
lmap.put("end", end);
lmap.put("phone_type", phone_type);
List list = userDao.querySoft(lmap);
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
sb.append("<messageCode>200</messageCode>");
sb.append("<message>请求成功</message>");
for (int i = 0; i < list.size(); i++) {
Map custMap = (Map) list.get(i);
sb.append("<soft>");
sb.append("<softid>"+String.valueOf( custMap.get("SOFTID")).trim()+"</softid> ");
sb.append("<softlogo>" +String.valueOf( custMap.get("LOGO")).trim() + "</softlogo>");
sb.append("<softname>" + String.valueOf(custMap.get("SOFTNAME")).trim() + "</softname>");
sb.append("<scorelevel>" +String.valueOf( custMap.get("SCORE")).trim() + "</scorelevel>");
sb.append("<isfree>" +String.valueOf( custMap.get("ISFREE")).trim() + "</isfree>");
sb.append("<softpath>" + String.valueOf(custMap.get("URL")).trim() + "</softpath>");
sb.append("</soft>");
}
sb.append("</soarsky>");
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/xml");
OutputStream out = response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
// 评论列表接口
@RequestMapping("/getcommentList.do")
public String getcommentList(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException {
String phoneType = (String) request.getParameter("softid").trim();
String softid = (String) request.getParameter("softid").trim();// 电话号码
String page = (String) request.getParameter("page");// 开始记录
String count = (String) request.getParameter("count");// 结尾记录
int end = Integer.parseInt(page) * Integer.parseInt(count);
int start = (Integer.parseInt(page) - 1) * Integer.parseInt(count) + 1;
Map lmap = new HashMap();
lmap.put("softid", softid);
lmap.put("start", start);
lmap.put("end", end);
lmap.put("phoneType", phoneType);
List list = userDao.queryComment(lmap);
int commentcount = userDao.queryCommentCount(lmap);
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
sb.append("<messageCode>200</messageCode>");
sb.append("<message>请求成功</message>");
String content=null;
for (int i = 0; i < list.size(); i++) {
Map custMap = (Map) list.get(i);
content=String.valueOf(custMap.get("CONTENT"));
if(content!=null)
{
content=URLDecoder.decode(content);
System.out.println("解码:"+content);
}
sb.append("<comment>");
sb.append("<content><![CDATA[" +content + "]]></content>");
sb.append("<phone><![CDATA[" + String.valueOf(custMap.get("PHONE")).trim() + "]]></phone>");
sb.append("<publishtime><![CDATA[" + String.valueOf(custMap.get("CREATEDATE")).trim()+ "]]></publishtime>");
sb.append("</comment>");
}
sb.append("<total>" + commentcount + "</total>");
sb.append("</soarsky>");
try {
response.setContentType("text/xml");
OutputStream out = response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 请求解析数据流
*
* @param strurl
* @param content
* @return
*/
public String inGet(String strurl) {
try {
URL url = new URL(strurl);
System.out.println("URL:" + strurl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
int code = httpURLConnection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
return convertStreamToString(httpURLConnection.getInputStream());
} else {
return "";
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* 将输入流转成字符串
*
* @param is
* @return
*/
public String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the
* BufferedReader.readLine() method. We iterate until the BufferedReader
* return null which means there's no more data to read. Each line will
* appended to a StringBuilder and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
2.中国电信广研院AR平台
1.频道供应商关系管理(频道跟内容提供商是一对多的关系),内容供应商包括:新浪生活,四维地图,开开周边,号百服务 ,
频道(都市生活)包括:频道名称,频道id,频道生活
2POI信息分类(id,名称)供应商关系管理(poi(分类)包括:食宿 ,购物 ,文化等),内容供应商包括:新浪生活,四维地图,开开周边,号百服务 ,
POI信息分类跟内容提供商是多对多的关系
接口实现:
1.获取频道内容接口
(根据childid查询出频道内容,用Sax解析,方法封装转成json格式)
/**
* 获取频道内容
*
* @return
*/
public String getCpContent() {
Map<String, Object> jsonObj = new HashMap<String, Object>();
String resultcode = "0";
String resultmsg = "error";
String total = "0";
String count = "0";
String page = "1";
if (!"".equals(chid) && chid != null) {
TbContentCp tb = cpService.getCpById(chid);
countChannel(chid);// 统计频道访问次数
SAXReader reader = new SAXReader();
try {
if (tb != null && tb.getCpurl().length() > 0) {
InputStream in = inPost(FormatURL(tb.getCpurl()), "");
System.out.println("URL==="+FormatURL(tb.getCpurl()));
if (in != null) {
Document doc = reader.read(in);
Element xml = doc.getRootElement();
resultcode = xml.elementText("resultcode");
resultmsg = xml.elementText("resultmsg");
total = xml.elementText("total");
count = xml.elementText("count");
page = xml.elementText("page");
Element date = xml.element("date");
Element poilist = date.element("poilist");
if (poilist != null) {
@SuppressWarnings("unchecked")
List<Element> list = poilist.elements("content");
List<POIBean> resultMap = new ArrayList<POIBean>();
if (list != null && list.size() > 0) {
for (Element content : list) {
POIBean pb = new POIBean();
pb.setCategory(content.elementText("category"));
pb.setName(content.elementText("name"));
pb.setIntroduction(content
.elementText("introduction"));
pb.setPic_url(content
.elementText("pic_url"));
pb.setAddress(content
.elementText("address"));
pb.setLatitude(content
.elementText("latitude"));
pb.setLongitude(content
.elementText("longitude"));
List<Map<String, String>> operate = new ArrayList<Map<String, String>>();
@SuppressWarnings("unchecked")
List<Element> operatelist = content
.elements("operate");
if (operatelist != null
&& operatelist.size() > 0) {
String lable, action, contentStr;
for (Element op : operatelist) {
Map<String, String> operaM = new HashMap<String, String>();
lable = op.elementText("lable");
action = op.elementText("action");
contentStr = op.elementText("content");
operaM.put("lable", lable);
operaM.put("action", action);
operaM.put("content", contentStr);
if (lable.length() > 0
&& action.length() > 0
&& contentStr.length() > 0) {
operate.add(operaM);
}
}
pb.setOperate(operate);
}
resultMap.add(pb);
}
jsonObj.put("poilist", resultMap);
}
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
resultcode = "0";
resultmsg = "error";
e.printStackTrace();
} finally {
jsonObj.put("resultcode", resultcode);
jsonObj.put("resultmsg", resultmsg);
jsonObj.put("total", total);
jsonObj.put("count", count);
jsonObj.put("page", page);
jsonObj.put("keywords", keywords);
this.setXml(JsonUtil.toJson(jsonObj));
}
} else {
jsonObj.put("resultcode", resultcode);
jsonObj.put("resultmsg", resultmsg);
jsonObj.put("total", total+"");
jsonObj.put("count", count);
jsonObj.put("page", page);
jsonObj.put("keywords", keywords);
this.setXml(JsonUtil.toJson(jsonObj));
}
return SUCCESS;
}
2.获取所有频道接口
(查询出所有频道list,解析list,用jsonObject封装,最后out出去)
/**
* 获取所有频道
*
* @return
*/
public String getAllChannel() {
log.debug("interface getAllChannel start");
JSONObject jsonObj = new JSONObject();
try {
List<TbContentChannel> channelList = channelService
.getAllTbContentChannel();
List<Map<String, String>> resultMap = new ArrayList<Map<String, String>>();
for (int i = 0; i < channelList.size(); i++) {
Map<String, String> channelMap = new HashMap<String, String>();
channelMap.put("id", channelList.get(i).getId());
channelMap.put("channelname", channelList.get(i)
.getChannelname());
resultMap.add(channelMap);
}
jsonObj.put("channellist", resultMap);
jsonObj.put("resultcode", "1");
jsonObj.put("resultmsg", "ok");
this.setXml(jsonObj.toString());
} catch (JSONException e) {
e.printStackTrace();
}
return SUCCESS;
}
3.珠海转换器项目(金融)
报文结构:
报文头 报文类型标识符 位 图 报文域
报文中使用位图来标识报文中有哪些域而没有哪些域。一个报文中可以有一个或两个位图位图在报文中位置如图所示:
报文头 报文类型标识符 位 图 报文域
(ThreadPoolNumberThree)线程池类用于接收来自Loadrunner来的报文,并发送给远程主机
定义一个方法用于用于接收来自远程主机来的报文
将从远程主机处理过的报文返回给Loadrunner
TransmitMachine
Socket,多线程
4.前海人寿(保险)
1.应付账款流程(用户登录后可以查看自己的应付账款,然后发给相关处理人处理,用户还可以看到自己的流程到哪一步了)
Jdeveloper,oracle ,存储过程(带参数的存储过程),function函数,weblogic(发布,把工程加到域里,domain)
5.电子商务(购物车)
主要做了购物车,处理sesion问题:禁止cookie,关闭浏览器是否保存session等等
session的作用,生命周期
session的原理
session使用细节,多浏览器共享session
重启浏览,关闭cookie的话无解
禁用cookie了--->解决方案 重写URL --->response.encodeURL
("day07/servlet/SessionDemo1");
response.encodeRedirectURL("day07/servlet/SessionDemo1");
javascript:void(0) //去掉超链接默认行为
//手工以cooie形式发sessionid,以解决关闭浏览器后,上次买的东西还在
(cooike未禁用)
客户端防表单重复提交和服务器端session防表单重复提交(服务器有延迟)
El表达式用于获取数据(${data})
6 总结
Session将信息保存在服务器上,而Cookie保存在客户端上
Session比Cookie更安全,Session比Cookie更占资源
开发原则:Session要尽量少用--尽量少向Session中保存信息
session使用了Cookie的机制,如果Cookie被禁用,则Session也无法使用,因
为客户端的session ID以cookie形式,保存在了客户端的内存当中,这个时候我
们可以通过url重写,来保证session的有效性.
重写url的方法如下
resp.encodeURL(request.getRequestURL().toString());
解决:
1.javascript阻止表单重复提交
<script type="text/javascript">
var iscommitted =false;//记录表单是否提交,2.设置按钮
不可用
function dosubmit(){
if(!iscommitted){
iscommitted =true;
return true;
}else{
return false;
}
}
</script>
2。服务器端防止表单重复提交
public class FormServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//产生随机数(表单号)
TokenProccessor tp =TokenProccessor.getInstance();
String token =tp.generateToken();
boolean b =isTokenValid(request);
if(!b){
System.out.println("不要重复提交");
return;
}
request.getSession().removeAttribute("token");
System.out.println("想数据库中提交注册。。。。");
}
//判斷表單是否提交
public boolean isTokenValid(HttpServletRequest request) {
String client_token = request.getParameter("token");
if (client_token == null) {
return false;
}
String server_token = (String) request.getSession
().getAttribute(
"token");
if (server_token == null) {
return false;
}
if (!server_token.equals(client_token)) {
return false;
}
return true;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
}
static class TokenProccessor { // 令牌
/**
* 1.把构造方法私有 2.自己创建一个 3.对外暴露一个方
法,允许获取上面创建的对象
*/
private TokenProccessor() {
}
private static final TokenProccessor instance = new
TokenProccessor();
public static TokenProccessor getInstance() {
return instance;
}
//任意的二进制数据是三个字节 ,指纹128位字节
public String generateToken() {
String token = System.currentTimeMillis() +
new Random().nextInt()
+ "";
try {
MessageDigest md =
MessageDigest.getInstance("md5");
byte[] md5 = md.digest();
//上传下载用到base64
// base64編程:把三个字节变成四个字
节 ,编之后最大不会超过64
BASE64Encoder encoder = new
BASE64Encoder();
encoder.encode(md5);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return null;
}
}
6.中兴供应商协同管理系统
1.主要做了报表开发,ireport报表画出来,(供应商,项目经理,面试通过率,人员到位率等等报表)
1.我负责的主要是应用管理,账号管理,Tips管理,其中应用管理包括应用新增,应用查询,应用新增里面可以添加
(新增版本(1.0,1.1),推荐指数(只能输入1-3位整数)类型(android,iphone(选择andoird时把软件路径显示,把iphone路径隐藏,否则反之)
-->js style.disply="",block不兼容火狐,none)--->页面震动(30%)),软件路径(request.getSession().getServletContext.getRealPath+File.separator)
软件Logo(实际上保存的是logo的路径),应用查询主要根据软件名称查询,再根据推荐指数,日期倒序排列
2.无线城市接口笔记
// 动态密码接口(解析properties,properties文件保存一段url,再通过InputStream fis = new FileInputStream(path+ConfigFileName);
Io流解析,HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();之后返回路径,最后out.println出去)
@RequestMapping("/dynamicPassword.do")
public void dynamicPassword(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException,
UnsupportedEncodingException {
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String auth = request.getParameter("auth");
String mobile = request.getParameter("mobile");
Properties props = new Properties();
PrintWriter out = null;
try {
String path = this.getClass().getClassLoader().getResource("/")
.getPath();
try {
path = URLDecoder.decode(path, "utf-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
InputStream fis = new FileInputStream(path+ConfigFileName);
props.load(fis);
Enumeration en = props.propertyNames();
String key = null;
String value = null;
while (en.hasMoreElements()) {
key = (String) en.nextElement();
if (key.equals(dynamicURL)) {
value = props.getProperty(key);
break;
}
}
if (!value.contains("?")) {
value += "?";
}
value += "id=" + id;
value += "&auth=" + auth;
value += "&mobile=" + mobile;
String result = inGet(value);
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
out.println(result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
}
}
}
//软件升级接口
(首先取出用户的imei,电话号码,version(版本),取出用户的版本号,跟服务器上的版本对比,
如果服务器上的版本低于客户版本就升级,
另外可以根据带过来的参数决定是否强制升级,如果是强制升级,result返回0,否则返回1
再用StringBUilder拼凑url,然后out出去)
@RequestMapping("/Upgrade.do")
public String upgrade(HttpServletRequest request,HttpServletResponse response,ModelMap map) throws SQLException {
String imei = (String)request.getParameter("imei");//用户
String mobile = (String)request.getParameter("mobile");//电话号码
String version = (String)request.getParameter("version");//软件版本号
StringBuffer sb= new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
String _version =null;
String force=null;
List<Map<String,String>> list =userDao.queryUserVersion();
if(null != list && list.size()>0)
{
Map versionMap=list.get(0);
force=versionMap.get("FORCE").toString();
int version_1=getVersion(version);
_version="V"+versionMap.get("V")+"R"+versionMap.get("R")+"A"+versionMap.get("A")+"P"+versionMap.get("P");
int version_2=getVersion(_version);
if(version_1>=version_2)
{
sb.append("<upgrade result=\"3\">");
sb.append("<tip>您已经是最新版本了</tip>");
sb.append("</upgrade>");
}
else
{
if(force.equals("0"))
{
sb.append("<upgrade result=\"0\">");
}
else
{
sb.append("<upgrade result=\"1\">");
}
sb.append("<version>"+_version+"</version>");
sb.append("<filesize>"+versionMap.get("FILESIZE")+"</filesize>");
// List<Map<String,String>> url= userDao.queryUserInfo();
sb.append("<updateUrl>"+versionMap.get("URL")+"</updateUrl>");
sb.append("</upgrade>");
}
}
sb.append("</soarsky>");
try {
response.setContentType("text/xml");
OutputStream out =response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
(首先获取带过来的电话号码,电话类型,然后根据参数查询返回List,再遍历list,在拼接url,最后out出去)
// 客户端请求精彩推荐列表
@RequestMapping("/getCommendList.do")
public String getCommendList(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException {
String sofit = (String) request.getParameter("mobile");// 电话号码
String phone_type = (String) request.getParameter("phone_type");
String page = (String) request.getParameter("page");// 开始记录
String count = (String) request.getParameter("count");// 结尾记录
int end = Integer.parseInt(page) * Integer.parseInt(count);
int start = (Integer.parseInt(page) - 1) * Integer.parseInt(count) + 1;
Map lmap = new HashMap();
lmap.put("start", start);
lmap.put("end", end);
lmap.put("phone_type", phone_type);
List list = userDao.querySoft(lmap);
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
sb.append("<messageCode>200</messageCode>");
sb.append("<message>请求成功</message>");
for (int i = 0; i < list.size(); i++) {
Map custMap = (Map) list.get(i);
sb.append("<soft>");
sb.append("<softid>"+String.valueOf( custMap.get("SOFTID")).trim()+"</softid> ");
sb.append("<softlogo>" +String.valueOf( custMap.get("LOGO")).trim() + "</softlogo>");
sb.append("<softname>" + String.valueOf(custMap.get("SOFTNAME")).trim() + "</softname>");
sb.append("<scorelevel>" +String.valueOf( custMap.get("SCORE")).trim() + "</scorelevel>");
sb.append("<isfree>" +String.valueOf( custMap.get("ISFREE")).trim() + "</isfree>");
sb.append("<softpath>" + String.valueOf(custMap.get("URL")).trim() + "</softpath>");
sb.append("</soft>");
}
sb.append("</soarsky>");
try {
response.setCharacterEncoding("utf-8");
response.setContentType("text/xml");
OutputStream out = response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
// 评论列表接口
@RequestMapping("/getcommentList.do")
public String getcommentList(HttpServletRequest request,
HttpServletResponse response, ModelMap map) throws SQLException {
String phoneType = (String) request.getParameter("softid").trim();
String softid = (String) request.getParameter("softid").trim();// 电话号码
String page = (String) request.getParameter("page");// 开始记录
String count = (String) request.getParameter("count");// 结尾记录
int end = Integer.parseInt(page) * Integer.parseInt(count);
int start = (Integer.parseInt(page) - 1) * Integer.parseInt(count) + 1;
Map lmap = new HashMap();
lmap.put("softid", softid);
lmap.put("start", start);
lmap.put("end", end);
lmap.put("phoneType", phoneType);
List list = userDao.queryComment(lmap);
int commentcount = userDao.queryCommentCount(lmap);
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<soarsky>");
sb.append("<messageCode>200</messageCode>");
sb.append("<message>请求成功</message>");
String content=null;
for (int i = 0; i < list.size(); i++) {
Map custMap = (Map) list.get(i);
content=String.valueOf(custMap.get("CONTENT"));
if(content!=null)
{
content=URLDecoder.decode(content);
System.out.println("解码:"+content);
}
sb.append("<comment>");
sb.append("<content><![CDATA[" +content + "]]></content>");
sb.append("<phone><![CDATA[" + String.valueOf(custMap.get("PHONE")).trim() + "]]></phone>");
sb.append("<publishtime><![CDATA[" + String.valueOf(custMap.get("CREATEDATE")).trim()+ "]]></publishtime>");
sb.append("</comment>");
}
sb.append("<total>" + commentcount + "</total>");
sb.append("</soarsky>");
try {
response.setContentType("text/xml");
OutputStream out = response.getOutputStream();
out.write(sb.toString().getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 请求解析数据流
*
* @param strurl
* @param content
* @return
*/
public String inGet(String strurl) {
try {
URL url = new URL(strurl);
System.out.println("URL:" + strurl);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
int code = httpURLConnection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK) {
return convertStreamToString(httpURLConnection.getInputStream());
} else {
return "";
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* 将输入流转成字符串
*
* @param is
* @return
*/
public String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the
* BufferedReader.readLine() method. We iterate until the BufferedReader
* return null which means there's no more data to read. Each line will
* appended to a StringBuilder and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
2.中国电信广研院AR平台
1.频道供应商关系管理(频道跟内容提供商是一对多的关系),内容供应商包括:新浪生活,四维地图,开开周边,号百服务 ,
频道(都市生活)包括:频道名称,频道id,频道生活
2POI信息分类(id,名称)供应商关系管理(poi(分类)包括:食宿 ,购物 ,文化等),内容供应商包括:新浪生活,四维地图,开开周边,号百服务 ,
POI信息分类跟内容提供商是多对多的关系
接口实现:
1.获取频道内容接口
(根据childid查询出频道内容,用Sax解析,方法封装转成json格式)
/**
* 获取频道内容
*
* @return
*/
public String getCpContent() {
Map<String, Object> jsonObj = new HashMap<String, Object>();
String resultcode = "0";
String resultmsg = "error";
String total = "0";
String count = "0";
String page = "1";
if (!"".equals(chid) && chid != null) {
TbContentCp tb = cpService.getCpById(chid);
countChannel(chid);// 统计频道访问次数
SAXReader reader = new SAXReader();
try {
if (tb != null && tb.getCpurl().length() > 0) {
InputStream in = inPost(FormatURL(tb.getCpurl()), "");
System.out.println("URL==="+FormatURL(tb.getCpurl()));
if (in != null) {
Document doc = reader.read(in);
Element xml = doc.getRootElement();
resultcode = xml.elementText("resultcode");
resultmsg = xml.elementText("resultmsg");
total = xml.elementText("total");
count = xml.elementText("count");
page = xml.elementText("page");
Element date = xml.element("date");
Element poilist = date.element("poilist");
if (poilist != null) {
@SuppressWarnings("unchecked")
List<Element> list = poilist.elements("content");
List<POIBean> resultMap = new ArrayList<POIBean>();
if (list != null && list.size() > 0) {
for (Element content : list) {
POIBean pb = new POIBean();
pb.setCategory(content.elementText("category"));
pb.setName(content.elementText("name"));
pb.setIntroduction(content
.elementText("introduction"));
pb.setPic_url(content
.elementText("pic_url"));
pb.setAddress(content
.elementText("address"));
pb.setLatitude(content
.elementText("latitude"));
pb.setLongitude(content
.elementText("longitude"));
List<Map<String, String>> operate = new ArrayList<Map<String, String>>();
@SuppressWarnings("unchecked")
List<Element> operatelist = content
.elements("operate");
if (operatelist != null
&& operatelist.size() > 0) {
String lable, action, contentStr;
for (Element op : operatelist) {
Map<String, String> operaM = new HashMap<String, String>();
lable = op.elementText("lable");
action = op.elementText("action");
contentStr = op.elementText("content");
operaM.put("lable", lable);
operaM.put("action", action);
operaM.put("content", contentStr);
if (lable.length() > 0
&& action.length() > 0
&& contentStr.length() > 0) {
operate.add(operaM);
}
}
pb.setOperate(operate);
}
resultMap.add(pb);
}
jsonObj.put("poilist", resultMap);
}
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
resultcode = "0";
resultmsg = "error";
e.printStackTrace();
} finally {
jsonObj.put("resultcode", resultcode);
jsonObj.put("resultmsg", resultmsg);
jsonObj.put("total", total);
jsonObj.put("count", count);
jsonObj.put("page", page);
jsonObj.put("keywords", keywords);
this.setXml(JsonUtil.toJson(jsonObj));
}
} else {
jsonObj.put("resultcode", resultcode);
jsonObj.put("resultmsg", resultmsg);
jsonObj.put("total", total+"");
jsonObj.put("count", count);
jsonObj.put("page", page);
jsonObj.put("keywords", keywords);
this.setXml(JsonUtil.toJson(jsonObj));
}
return SUCCESS;
}
2.获取所有频道接口
(查询出所有频道list,解析list,用jsonObject封装,最后out出去)
/**
* 获取所有频道
*
* @return
*/
public String getAllChannel() {
log.debug("interface getAllChannel start");
JSONObject jsonObj = new JSONObject();
try {
List<TbContentChannel> channelList = channelService
.getAllTbContentChannel();
List<Map<String, String>> resultMap = new ArrayList<Map<String, String>>();
for (int i = 0; i < channelList.size(); i++) {
Map<String, String> channelMap = new HashMap<String, String>();
channelMap.put("id", channelList.get(i).getId());
channelMap.put("channelname", channelList.get(i)
.getChannelname());
resultMap.add(channelMap);
}
jsonObj.put("channellist", resultMap);
jsonObj.put("resultcode", "1");
jsonObj.put("resultmsg", "ok");
this.setXml(jsonObj.toString());
} catch (JSONException e) {
e.printStackTrace();
}
return SUCCESS;
}
3.珠海转换器项目(金融)
报文结构:
报文头 报文类型标识符 位 图 报文域
报文中使用位图来标识报文中有哪些域而没有哪些域。一个报文中可以有一个或两个位图位图在报文中位置如图所示:
报文头 报文类型标识符 位 图 报文域
(ThreadPoolNumberThree)线程池类用于接收来自Loadrunner来的报文,并发送给远程主机
定义一个方法用于用于接收来自远程主机来的报文
将从远程主机处理过的报文返回给Loadrunner
TransmitMachine
Socket,多线程
4.前海人寿(保险)
1.应付账款流程(用户登录后可以查看自己的应付账款,然后发给相关处理人处理,用户还可以看到自己的流程到哪一步了)
Jdeveloper,oracle ,存储过程(带参数的存储过程),function函数,weblogic(发布,把工程加到域里,domain)
5.电子商务(购物车)
主要做了购物车,处理sesion问题:禁止cookie,关闭浏览器是否保存session等等
session的作用,生命周期
session的原理
session使用细节,多浏览器共享session
重启浏览,关闭cookie的话无解
禁用cookie了--->解决方案 重写URL --->response.encodeURL
("day07/servlet/SessionDemo1");
response.encodeRedirectURL("day07/servlet/SessionDemo1");
javascript:void(0) //去掉超链接默认行为
//手工以cooie形式发sessionid,以解决关闭浏览器后,上次买的东西还在
(cooike未禁用)
客户端防表单重复提交和服务器端session防表单重复提交(服务器有延迟)
El表达式用于获取数据(${data})
6 总结
Session将信息保存在服务器上,而Cookie保存在客户端上
Session比Cookie更安全,Session比Cookie更占资源
开发原则:Session要尽量少用--尽量少向Session中保存信息
session使用了Cookie的机制,如果Cookie被禁用,则Session也无法使用,因
为客户端的session ID以cookie形式,保存在了客户端的内存当中,这个时候我
们可以通过url重写,来保证session的有效性.
重写url的方法如下
resp.encodeURL(request.getRequestURL().toString());
解决:
1.javascript阻止表单重复提交
<script type="text/javascript">
var iscommitted =false;//记录表单是否提交,2.设置按钮
不可用
function dosubmit(){
if(!iscommitted){
iscommitted =true;
return true;
}else{
return false;
}
}
</script>
2。服务器端防止表单重复提交
public class FormServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//产生随机数(表单号)
TokenProccessor tp =TokenProccessor.getInstance();
String token =tp.generateToken();
boolean b =isTokenValid(request);
if(!b){
System.out.println("不要重复提交");
return;
}
request.getSession().removeAttribute("token");
System.out.println("想数据库中提交注册。。。。");
}
//判斷表單是否提交
public boolean isTokenValid(HttpServletRequest request) {
String client_token = request.getParameter("token");
if (client_token == null) {
return false;
}
String server_token = (String) request.getSession
().getAttribute(
"token");
if (server_token == null) {
return false;
}
if (!server_token.equals(client_token)) {
return false;
}
return true;
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
}
static class TokenProccessor { // 令牌
/**
* 1.把构造方法私有 2.自己创建一个 3.对外暴露一个方
法,允许获取上面创建的对象
*/
private TokenProccessor() {
}
private static final TokenProccessor instance = new
TokenProccessor();
public static TokenProccessor getInstance() {
return instance;
}
//任意的二进制数据是三个字节 ,指纹128位字节
public String generateToken() {
String token = System.currentTimeMillis() +
new Random().nextInt()
+ "";
try {
MessageDigest md =
MessageDigest.getInstance("md5");
byte[] md5 = md.digest();
//上传下载用到base64
// base64編程:把三个字节变成四个字
节 ,编之后最大不会超过64
BASE64Encoder encoder = new
BASE64Encoder();
encoder.encode(md5);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return null;
}
}
6.中兴供应商协同管理系统
1.主要做了报表开发,ireport报表画出来,(供应商,项目经理,面试通过率,人员到位率等等报表)
发表评论
-
大众点评电话面试(2015/3/13)
2015-04-02 21:57 461.负责项目的架构是怎样的2.网站搞活动的时候高并发怎么处理 ... -
2015.3.23-3.25面试题
2015-04-02 20:57 372015/3/18 1.项目有哪几 ... -
盛付通面试题(2014.3.25)
2015-03-19 09:35 56盛付通面试 2015/3/16 1. ... -
翰之友面试2015/3/13
2015-03-16 13:08 321.struct1与structs2的区别 2.什么是事 ... -
ebay电话面试 2015/3/11
2015-03-11 18:36 591.hibernate与ibatis的区别 ... -
menards
2015-03-10 18:07 26menards Menards是美国第三大家居装饰和用品 ... -
上海盛付通电子支付面试题(电话)2015/3/4
2015-03-04 23:28 761.object的方法有哪几个 clone,wai ... -
bluem内部面试题(2014.1.12)
2015-01-12 18:25 581.jquery插件没有用过,jquery取兄弟节点($( ... -
bluem内部面试题(2014.12.8)
2014-12-08 15:28 891.主要用jquery,js做了什么,什么功能,用了jqu ... -
englis interview
2014-04-23 13:35 8611.introdue myselfok, it's a ... -
邦购面试题(2014.4.22)
2014-04-22 17:10 2671.多线程银行转账怎么控制,有几个线程同时从账户扣钱(钱不 ... -
塔塔电话摩根面试题(2014.4.21)
2014-04-21 17:30 334塔塔摩根面试题1.what ... -
一网打尽JAVA英文面试题目(转)
2014-04-21 14:09 2758http://blog.csdn.net/aw_vip ... -
百度支付面试(转)
2014-04-20 23:22 281一面 1.简单的自我介绍 2.java方面:集合方面: ... -
车享网面试题(2014.4.16)
2014-04-16 22:54 4961.java内存泄露怎么监 ... -
迅付信息科技有限公司(2014.4.16)
2014-04-16 22:48 8421.常用的设计模式有哪些,画出某个设计模式的UML图 h ... -
阿里巴巴电话面试(2014.4.16)
2014-04-16 21:48 4111.spring ioc 怎么理解? Aop是由动态代理实 ... -
北塔软件面试题(2014.4.14)
2014-04-14 22:22 9231.有一个文件tool.txt,里面有a,b,c,d,f,e ... -
拉卡拉面试题(2014.4.14)
2014-04-14 21:46 12241.jvm参数设置的作用,-server,-mnax,-m ... -
携程网电话面试(2014.4.11)
2014-04-12 23:57 2561.spring事物有几种隔离级别(5种),require ...
相关推荐
"项目分析报告模板.pdf" 本文档是关于项目分析报告模板的详细说明,涵盖了项目报告书、项目信息来源、项目所属公司基本信息、股东结构情况等方面的内容。 一、项目报告书 项目报告书是项目分析的核心部分, chứa...
本源码提供了一个基于Java的JAVA项目分析工具的设计。项目包含24个文件,其中包括9个Java文件、4个Markdown文档、3个Properties文件、2个XMind文件,以及用于版本控制和配置的文件。该工具可以解析JAVA项目,将项目...
【项目分析培训】 项目分析是IT行业中至关重要的一个环节,它是成功实施任何技术项目的基础。在项目的初期,项目分析涉及到对需求的深入理解、业务流程的梳理、问题识别以及解决方案的初步构思。在这个过程中,分析...
"清洁能源项目分析培训课程-使用RETScreen软件进行财务和风险分析" 清洁能源项目的财务和风险分析是清洁能源项目投资决策的关键步骤。RETScreen软件是一个专业的财务和风险分析工具,能够帮助投资者和项目开发者对...
《房价数据挖掘》项目分析报告 资源描述 本资源是一个用于房价数据挖掘的Jupyter Notebook项目,包含了从数据获取、预处理、分析到可视化的完整流程,旨在对某地区房价进行深入分析和预测。该项目详细介绍了数据的...
SPSS 项目分析 SPSS(Statistical Package for the Social Sciences)是一款功能强大的统计分析软件,在社会科学、教育科学、医学、商业等领域广泛应用。在本文档中,我们将主要介绍 SPSS 在项目分析中的应用,详细...
【上海市金山项目分析报.doc】是一份针对上海金山地区的房地产项目的详细分析报告,旨在为营销策略提供关键数据和洞察。报告涵盖了多个方面的内容,包括项目概述、市场分析、项目周边环境评估以及项目定位等核心环节...
仿BiliBili项目分析 本项目旨在以BILIBILI为模板,开发出一款包含视频上传、视频下载,视频播放以及用户播放视频时的弹幕、评论、点赞等功能的视频门户网站。
【小区房地产市场项目分析报告模版】 小区房地产市场项目分析报告是评估房地产开发项目的关键工具,它涵盖了多个方面的深入研究,以确保项目的成功实施。以下是对报告内容的详细解析: 一、项目概况 项目概况提供...
在进行项目分析与评估时,IT专业人士需要熟悉这些工具和技术,以便做出明智的决策,确保项目能够成功并实现预期的回报。同时,理解保本点可以帮助管理者优化资源分配,降低潜在风险,提高项目的成功率。在实际应用中...
日志信息管理系统项目分析 日志信息管理系统项目分析
都江堰青城山项目市场分析及建议(含竞品项目分析).pptx
ERP-营销项目分析方法
6.项目分析预测.doc
p2p项目分析.pdf
项目分析2875371597.pptx
大型游乐场项目分析报告.pptx
某房地产楼盘项目分析报告.docx
电子政务“金字工程”项目分析分析.doc