jsp、servlet项目部分错误总结

在最近的写项目过程中遇到了很多问题,这里来整理一下

PropertyNotFoundException: 类型XXX上找不到属性XXX的解决方案

之前遇到了这样的问题,它的报错提示是这样的:

javax.el.PropertyNotFoundException: 类型[java.lang.String]上找不到属性[menuid2]

在网上搜到了很多问题解答的方案:

  • 检查java类中属性名有没打错。
  • 在页面用el表示时,应该将第一个字母改为小写。
  • 检查自己的代码写的是否规范
  • 命名冲突

这些只适用于下图所示的场景:
问题描述
而我这个问题的原因是因为最后的页面是一个组合的页面,我传递Menu这个菜单对象时使用的是request传递,导致它接收不到数据,所以认为Menu对象是String类型

下面是传递过去的页面,而我调用Menu对象的页面是left.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 frameset//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-frameset.dtd">
<html>
    <head>
        <meta http-equiv=content-type content="text/html; charset=utf-8" />
        <meta http-equiv=pragma content=no-cache />
        <meta http-equiv=cache-control content=no-cache />
        <meta http-equiv=expires content=-1000 />
        
        <title></title>
    </head>
    <frameset border=0 framespacing=0 rows="60, *" frameborder=0>
        <frame name=head src="head.jsp" frameborder=0 noresize scrolling=no>
            <frameset cols="170, *">
                <frame name=left src="left.jsp" frameborder=0 noresize />
                <frame name=right src="right.jsp" frameborder=0 noresize scrolling=yes />
            </frameset>
    </frameset>
    <noframes>
    </noframes>
</html>

最终使用session传递数据就好了

错误代码400

错误代码400指的是语法问题
错误图示
在第一个问题发生之后,我突发奇想,在

<frame name=right src="right.jsp" frameborder=0 noresize scrolling=yes />

这行代码的.jsp后面使用?赋值就会出现现在这个错误情况。解决的办法和之前一样,使用session传值就好了

如果在servlet中使用重定向也在后面使用?赋值的话也会出现这个报错页面

$.post只能进入默认页面

在制作登录界面的时候,应该先判断用户名和密码是否正确,之后跳转到对应的界面,由于对前端知识的不熟悉,我使用了ajax的方法

前端代码:

<script type="text/javascript">
	$(function cc() {
		$("#checkcheck").click(function () {
			var TxtUserName = document.getElementById("TxtUserName1").value;
			var TxtPassword = document.getElementById("TxtPassword1").value;

			console.log("click执行");

			location.href = "/login?TxtUserName=" + TxtUserName + "&TxtPassword=" + TxtPassword;
			/*$.post("/login",{ TxtUserName: TxtUserName, TxtPassword: TxtPassword},function (result) {

				alert(result);
				//rs1.innerText = result;
			})*/
		})
	})
</script>

后端页面:

        for (Users user:list) {
            if(Objects.equals(user.getLoginName(),username) && Objects.equals(user.getPassword(),code)){
                System.out.println("user.getLoginName() = " + user.getLoginName() + " username = " + username + " user.getPassword() = " + user.getPassword() + " code = " + code);
                req.setAttribute("user",user);
                //req.setAttribute("roleid",user.getRoleId());
                flag = true;
                //writer.print("<script>alert('登录成功');location.href='/menu'</script>");
                req.getRequestDispatcher("/menu").forward(req,resp);
                writer.print("登录成功");
                //resp.sendRedirect("/login");
                //?user=" + user

            }
        }
        if (!flag){
            //writer.print("<script>alert('登录失败');location.href='/login.jsp?TxtUserName="+username+"'</script>");
            writer.print("登录失败");
            //resp.sendRedirect("/login");
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }

可以通过我注释的内容看到之前使用ajax的痕迹
之后我了解到ajax是不可能在服务端完成跳转的,他只能返回文本信息。

Unescaped xml character问题

在这里插入图片描述

在赋值的时候出现了这个错误,在网上找到了解决的办法

  1. 通过ctrl + alt + s 调出setting界面
  2. 找到Editor对应的inspections选项
  3. 在HTML下的Accessibility找到Malformed content of < script> tag把勾去掉就可以解决了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值