1. ssh 或 ssm 架构中,若自定义 filter 中 需要 调用 spring 容器中的对象,可以在filter 中 直接 使用 spring 注解 将 属性注入进来吗?为什么?
答: (1): 不可以,因为 filter 是在web.xml中声明的,属于服务器的,不在spring容器中,所以不能从spring容器中调用bean。
具体做法是: 使用 request对象得到 ServletContext (整个web应用上下文), 再用 ServletContext 得到 spring 容器,例如:
WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
PermissionCheck pc = (PermissionCheck)applicationContext.getBean("permissionCheck");
实例为: 税务系统(itcastTax)中 LoginFilter.java
2. 开发一个web应用时,如果数据库的配置文件是统一放在pc某一个位置,此时如何 连接 数据库,就像在兰州电信一样。
3. 要实现用户注册功能,服务需要发布 注册 功能,还需要发布什么?
答: 还需要发布 当前 注册用户是否已存在 的验证 功能。
4. 在实现 导出文件时,在页面上应该怎么做?
答:导出文件 时,应该 使用 window.open(“url”)方法 或者 的 href属性 向服务端发送链接
例如:
<input type="button" value="导出" class="s_button" onclick="doExportExcel()"/>;
function doExportExcel(){
window.open("${basePath}nsfw/user_exportExcel.action");
}
代码位置: /itcastTax/WebRoot/WEB-INF/jsp/nsfw/user/listUI.jsp
5. 在一个表单中使用富文本编辑器,提交表单之前需要干什么?
答: 需要将富文本编辑器中的内容 同步 到 textarea 中,然后调用 form.serialize() 方法,提交。
<div style="padding:10px 10px 10px 10px">
<form id="itemAddForm" class="itemForm" method="post">
<table cellpadding="5">
<tr>
<td>商品类目:</td>
<td>
<a href="javascript:void(0)" class="easyui-linkbutton selectItemCat">选择类目</a>
<input type="hidden" name="cid" style="width: 280px;"></input>
</td>
</tr>
<tr>
<td>商品标题:</td>
<td><input class="easyui-textbox" type="text" name="title" data-options="required:true" style="width: 280px;"></input></td>
</tr>
<tr>
<td>商品卖点:</td>
<td><input class="easyui-textbox" name="sellPoint" data-options="multiline:true,validType:'length[0,150]'" style="height:60px;width: 280px;"></input></td>
</tr>
<tr>
<td>商品价格:</td>
<td><input class="easyui-numberbox" type="text" name="priceView" data-options="min:1,max:99999999,precision:2,required:true" />
<input type="hidden" name="price"/>
</td>
</tr>
<tr>
<td>库存数量:</td>
<td><input class="easyui-numberbox" type="text" name="num" data-options="min:1,max:99999999,precision:0,required:true" /></td>
</tr>
<tr>
<td>条形码:</td>
<td>
<input class="easyui-textbox" type="text" name="barcode" data-options="validType:'length[1,30]'" />
</td>
</tr>
<tr>
<td>商品图片:</td>
<td>
<a href="javascript:void(0)" class="easyui-linkbutton picFileUpload">上传图片</a>
<input type="hidden" name="image"/>
</td>
</tr>
<tr>
<td>商品描述:</td>
<td>
<textarea style="width:800px;height:300px;visibility:hidden;" name="desc"></textarea>
</td>
</tr>
<tr class="params hide">
<td>商品规格:</td>
<td>
</td>
</tr>
</table>
<input type="hidden" name="itemParams"/>
</form>
<div style="padding:5px">
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a>
<a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>
</div>
</div>
<script type="text/javascript">
var itemAddEditor ;
//页面初始化完毕后执行此方法
$(function(){
//创建富文本编辑器
//itemAddEditor = TAOTAO.createEditor("#itemAddForm [name=desc]");
itemAddEditor = KindEditor.create("#itemAddForm [name=desc]", TT.kingEditorParams);
//初始化类目选择和图片上传器
TAOTAO.init({fun:function(node){
//根据商品的分类id取商品 的规格模板,生成规格信息。第四天内容。
TAOTAO.changeItemParam(node, "itemAddForm");
}});
});
//提交表单
function submitForm(){
//有效性验证
if(!$('#itemAddForm').form('validate')){
$.messager.alert('提示','表单还未填写完成!');
return ;
}
//取商品价格,单位为“分”
$("#itemAddForm [name=price]").val(eval($("#itemAddForm [name=priceView]").val()) * 100);
//同步文本框中的商品描述
itemAddEditor.sync();
//取商品的规格
var paramJson = [];
$("#itemAddForm .params li").each(function(i,e){
var trs = $(e).find("tr");
var group = trs.eq(0).text();
var ps = [];
for(var i = 1;i<trs.length;i++){
var tr = trs.eq(i);
ps.push({
"k" : $.trim(tr.find("td").eq(0).find("span").text()),
"v" : $.trim(tr.find("input").val())
});
}
paramJson.push({
"group" : group,
"params": ps
});
});
//把json对象转换成字符串
paramJson = JSON.stringify(paramJson);
$("#itemAddForm [name=itemParams]").val(paramJson);
//ajax的post方式提交表单
//$("#itemAddForm").serialize()将表单序列号为key-value形式的字符串
$.post("/item/save",$("#itemAddForm").serialize(), function(data){
if(data.status == 200){
$.messager.alert('提示','新增商品成功!');
}
});
}
5. springboot 项目中 启动器 是否可以和 cotroller 位于 同一包中?
答: 可以 启动类 必须与cotroller 在 同一包或 上级包 不能 在 平级或者 下级目录