JSP学习与尝试
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。 (简单理解就是在Java代码之中写入html标签,和在学习前端的过程中学习的JavaScript有些类似,但是经过查询后,两者还是有很大差别:
1.Jsp是一种动态网页技术标准也是JAVAEE的标准
2.JavaScript是脚本语言,用于前端交互,而且应该是在html中写入java(好吧,最大区别是前端和后端)
(1)JSP和Java servlet
1.JSP事实上就是一种servlet,但是JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句(使用Jsp只需要完成程序员需要输出到客户端的内容)
2.servlet擅长逻辑控制,Jsp擅长页面显示
3.Web容器会把Jsp翻译为可识别的类
(2)JSP运行
(3)jsp编写中所遇到的问题
1.最重要的应该是如何正确建立一个jsp项目(其中包括后续Module的配置,Tomcat的配置)
我是在经历了自己创建运行失败多次找到的教程,记下来比较好:用IDEA创建jsp文件
2.在对tomcat 进行配置时出现的Tomcat deployment 下没有Artifact,在这种情况下jsp文件无法进行“run"操作
解决方法
3.getRequestDispatcher红字显示错误
错误提醒:cannot resolve method"xxxxx"
解决办法:添加Tomcat
解决方法方法2;
4.有关跳转页面的问题
在设计中如果密码错误就会跳转到login页面,其中我觉得应该有两种形式:
else{
request.setAttribute("usertext","密码与账号名不符合!");
//(1)request.getRequestDispatcher("login.jsp".(request,response));
//(2)<jsp:forward page = "login.jsp"></jsp:forward>
}
但是事实上,


Rename reference?
后来我去查找了一下具体用法,修改为:
就正确了。
除了以上两种,还有代码: response.sendRedirect(“xxx.jsp”);
有关它们的区别:
1.response 客户端跳转
2.forword做标记,服务器跳转
3.requestDispatcher类 服务器跳转
有关jsp指令分享的文章:
jsp常见指令总结
5.有关jsp文件防止乱码的问题
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("username");
String password=request.getParameter("password");
request.setCharacterEncoding("gb2312");
对,就是它们!
(4)本次作业设计
1.三个jsp实现登录,它们分别为:
login.jsp:负责登陆页面
doIt.jsp:负责登录过程问题处理和成功进行后的跳转
success.jsp:计算器的运行,引入了一个beans包,包中的computerBeans里写有运算过程的具体实现,在success中用useBean方法进行了调用
具体代码:
login.jsp:
<%--
Created by IntelliJ IDEA.
User: 石
Date: 2020/5/23
Time: 10:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<form action="doIt.jsp" method="post" name=form >
<font size="7" >login..</font>
<br>Name:<input type="text" value=""name="username">
<br>password:<input type="text" value=""name="password">
<br><input type="submit" value="submit" name="submit">
</form>
</body>
</html>
doIt.jsp:
<%--
Created by IntelliJ IDEA.
User: 石
Date: 2020/5/23
Time: 10:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>doit.jsp页面</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("username");
String password=request.getParameter("password");
String referer=request.getHeader("Referer");
if(referer==null||referer.trim().length()==0){
response.sendRedirect("login.jsp");
return;
}
if(name.trim().equals("Shijl")&&password.trim().equals("24689"))
{
request.setAttribute("usertext","登陆成功");
request.getRequestDispatcher("success.jsp").forward(request,response);
}
else{
request.setAttribute("usertext","密码与账号名不符合!");
request.getRequestDispatcher("login.jsp").forward(request,response);
//(2)<jsp:forward page = "login.jsp"></jsp:forward>
}
%>
</body>
</html>
success.jsp:
<%--
Created by IntelliJ IDEA.
User: 石
Date: 2020/5/23
Time: 10:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--用useBean去调用computerBean--%>
<jsp:useBean id="computer" class="beans.computerBean" scope="page"></jsp:useBean>
<%@page import="beans" %>
<html>
<head>
<title>Success.jsp</title>
</head>
<body bgcolor="#7fffd4">
<form action="" method="post" name="form">
<input type="text"name="num1" value="">
<select name="item">
<option value="Add">+</option>
<option value="Sub">-</option>
<option value="Mul">*</option>
<option value="Div">/</option>
</select>
<input type="text"name="num2" value="">
<br>
<input type="submit" name="submit" value="提交">
</form>
<br><%//问题处理
request.setCharacterEncoding("gb2312");
String str1=request.getParameter("num1");
String str2=request.getParameter("num2");
String operation=request.getParameter("item");
if(str1==null)
{
str1="";
}
if(str2==null)
{
str2="";
}
if(operation==null)
{
operation="";
}
try{
double num1=Double.parseDouble(str1);
double num2=Double.parseDouble(str2);
computer.setNum1(num1);
computer.setNum2(num2);
if(operation.compareTo("add")==0)
{
out.print(num1+"+"+num2+"="+computer.Add());
}
if(operation.compareTo("sub")==0)
{
out.print(num1+"-"+num2+"="+computer.Sub());
}
if(operation.compareTo("mul")==0)
{
out.print(num1+"*"+num2+"="+computer.Mul());
}
if(operation.compareTo("div")==0){
out.print(num1+"/"+num2+"="+computer.Div());
}
}
catch(NumberFormatException e)
{
out.print("输入有误,请重新输入");
}
%>
</body>
</html>
注意:

这里我本想表示在jsp文件中引用包要用<%@pageimport=“beans.computerBean”%>来表示我引入了包,但是这样做是错误的前面的useBean方法已经进行了调用
2.生成jsp文件最好不要在WEB-INF下,后续运行很麻烦。
本文详细介绍了JSP的基本概念、JSP与Java Servlet的区别,以及在实际开发中遇到的问题,如项目配置、Tomcat部署、JSP指令的使用等。通过实例展示了登录功能的实现,探讨了页面跳转的不同方式,并分享了解决文件乱码问题的方法。最后,强调了在JSP中引用包的注意事项和避免将jsp文件放在WEB-INF下带来的困扰。

9519

被折叠的 条评论
为什么被折叠?



