Jsp+Servlet+JavaBean原生态开发问题集锦

问题1:


从数据库查到了年级,教材版本,科目。如何判断operation选了哪个?

<select name="grade">
 <%
       String sqlPlus3 = “从表中查询年级的字段”;
       Vector<String[]> vv3 = DB.getMessage(sqlPlus3);//获取所有字段
       for(int i=0;i<vv3.size();i++){
       String[] str = vv3.get(i);//得到sql查询的字段
%>


<option value="<%=str[0]%>"><%=str[0] %></option>

</select>

思路:把选中的字段,放到option的value中,通过select标签的name访问所选的字段名称。

然后在ActionServlet.java里面:

request.getParameter("grade")获得。


问题2:

过滤器:没找到类的异常


原因是:该项目工程的web.xml的配置中 <filter-class>,找不到对应路径的类。原来,LogFilter.java的包为com.zh.servlet,而web.xml没有填写完整路径,补之即可。

<filter>
   <filter-name>LogFilter</filter-name>
   <filter-class>com.zh.servlet.LogFilter</filter-class>      //补充.java的包名
   <init-param>
 <param-name>test-param</param-name>
 <param-value>Initialization Paramter</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>LogFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>


问题3:

对于Myeclipse中引入jQuery后有的文件出现multiple markers at this line - missing semicolon错误的解决

原因是myeclise9之后的版本的验证规则与jQuery的冲突,但实际上并不影响开发者正常使用,所以只要取消验证即可。

步骤为:右键->myeclise->  Exclude From Validation


问题4:

【项目加上过滤器后,依然出现乱码】

过滤器代码:

public class EncodingFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		String encoding = filterConfig.getServletContext().getInitParameter("encoding");
		System.out.println("EncodingFilter:"+encoding);///
		arg0.setCharacterEncoding(encoding);
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		this.filterConfig = arg0;//在web.xml里面读
		
	}

	private FilterConfig filterConfig = null;

}<strong>
</strong>
web.xml
<context-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </context-param>
  <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.zh.filter.EncodingFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
代码都没问题,原因是因为 缓存:之前的乱码覆盖了现在的页面。

/*********************************************************大三下*************************************************************************/

问题5:


今天整合界面出现了问题,main部分不能正常显示,sidebar和navicat可以正常显示。
查看F12发现navicat的部分把sidebar和main部分包住了,才导致main部分不能正常显示。
原因探究:少了一个nav 标签的 结束标签。


问题6:

Error instantiating servlet class cn.edu.fjnu.analysis.servlet.question_admin.DifficultyQuestionReviewServlet

有位网友的答复为:
我遇到这样的错,是因为,没有在工程的WEB-INF目录中,没有生成classes,会报这样的错误。解决方法:project->properties->java build path->source->src,将Default output folder设置为[项目名]/WebRoot/WEB-INF/classes,点击OK。
原因探究:因为yc同步svn时把.classpath(保存的是项目所用的外部引用包的路径)也传上去了,下载新版本代码后不能成功运行,是因为在他的项目引了几个支持json包,而我本地没有对于的jar包。删除那几个错误的引用即可。

知识补充:

.classpath保存的是项目所用的外部引用包的路径。
.mymetadata 保存的是工程属性文件
.project 是工程构建配置文件
.metadata文件夹的作用 Eclipse内所有改动都放在这个文件夹
.setting文件夹的作用:
把.js文件的编码方式由改成默认的ISO-8859-1改成GBK时,这个文件会有记录。
如果把这个文件删了,在eclipse中查看js文件的中文字符就是乱码,但发布的时候还是能正常显示中文的。
结论:这个文件是eclipse查看js文件的时候用的,记录了用什么编码方式查看。与发布无关。.settings\文件夹不会被打到.war包里。


问题7:

Caused by: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/F:/gszh/gszh/apache-tomcat-7.0.57/webapps/shop/WEB-INF/lib/struts2-core-2.3.4.1.jar!/struts-default.xml:29:72
一直报错,原来是一个缓存的jar包没引,却提示Struts.xml有问题,也是无语了。

原因探究:旧项目在webapps和work中的残留所致,删除它即可。


问题8:

tab1能加载echarts饼图,tab2则不行;或tab2能加载echarts饼图,tab1则不行(不能同时显示)。


查看F12发现,出现异步错误。

原因探究:$getJSON默认是不支持异步加载的。($ajax有支持异步的属性,它很灵活)

可以加个时间setTimeOut

还是不能正常显示,但发现已经成功得到JSON数据

原来是divclass少了active

原因探究:bootstrap里面,active能加载效果,如果少了它,就加载不出来。


问题9:


yc调饼图,服务器能得到数据,返回前台却为空。

原因探究:<b>${ErrorRate}</b>EL表达式值显示不了。调试后发现,在查看题目详情的时候,页面还发送了3个ajax请求(用$getJSON发送),所以用request.setAttribute("errorRate",errorRate);显示上图的100.0%是会丢失数据的,以至于在用tab进行Echarts图的转换的时候,request已经死亡。所以得把其换为request.getSession().setAttribute("errorRate", errorRate);  改后即可访问数据。

然而用浏览器自带的后退键,选择其他题目,再进入题目详情后,却显示了上题存储的数据(即访问的session不是最新的,而总是上一次的)

原来是EL表达式在加载页面的时候就把数据给读出来了,而我的request.getSession().setAttribute("errorRate", errorRate);是放在ajax请求的响应后端代码块中的,要发送ajax并响应后才能把值回显,导致新值还没覆盖,加载页面时就把旧数据给读出来了。

此页面涉及到四个请求:questiondetails、pieChart1、pieChart2、pieChart3,解决办法是把EL读取的字段,放在questiondetails请求中,这样就不会出现请求速度上面的不一致,而导致数据有先后。


问题10:

拿到yd的存储过程后,从数据库中(在服务器)读出来显示的是乱码

原因探究:远程服务器mysql默认并不是UTF-8,需要修改了数据库server的默认编码为UTF-8。


问题11:

table标签的包的数据显示不出来。

原因探究:table标签里有个属性data-url="tables/data1.json,去除即可。


问题12:

远程svn仓库有两个,下载到桌面上的时候,提示已下载,然而明明已经删除掉了。

原因探究:从svn仓库检出项目到本地,除了项目本身,还会将一个.svn的隐藏文件同步到本地端,用以记录版本控制。可开启Windows的隐藏模式,显示查看生成的.svn在各文件夹的分布情况。


问题13:

人工审核中的显示最近审核记录,不能按最新时间排序。

旧:


新:


原因探究:存储过程查询出来的审核时间是按字符串顺序排序而非按日期。

修改了p_query_recently_reviewed_scope
-- order by 'lastReviewDate' -- 这里是用字符串顺序排的,要把字符串改成日期类型
order by date_format(lastReviewDate,'%y-%m-%d-%H-%i-%s') DESC


BEGIN
-- 存储过程:查询某个审核者最近审核的单元
-- 0403
SELECT f_scope_path_string_by_back_tracking(unit.pk_scope_id) as 'scopePathString',
	unit.pk_scope_id as 'unitId',unit.`name` as 'unitName',
	f_last_review_date_of_a_unit(unit.pk_scope_id,in_reviewer_member_id) as 'lastReviewDate'-- 输入:审核者ID
from t_question,t_scope `lesson`,t_scope `unit`
where t_question.scope_pk_scope_id=lesson.pk_scope_id-- join
and lesson.fk_parent_id=unit.pk_scope_id-- join
and t_question.fk_reviewerMemberId=in_reviewer_member_id-- 输入:审核者ID
GROUP BY unit.pk_scope_id
order by date_format(lastReviewDate,'%y-%m-%d-%H-%i-%s') DESC
limit 0,5;-- 最多显示5条
-- 
END



问题14:

①错误率返回前台可能会出现小数点位数>2的情况;

                DecimalFormat df = new DecimalFormat("#.##");
		double converNum = Double
				.parseDouble(questionDetailList.getErrorRate());
		converNum *= 100;
		String str = df.format(converNum);// 转换成对应的格式:XX.XX%
		
②数据库datetime类型存入不成功。

                Date date = new Date();
		Timestamp reviewDate = new Timestamp(date.getTime());








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值