Jsp 表单如何设计

杂七杂八

加!表示全局变量
不加表示局部变量
<% 这个中间是java代码 %>
int = Integer.parseInt(char) 把字符串char转换为int值

语法<%= %>

表达式
语法:<%= %>

作用:向浏览器输出数据

用jsp的表达式和Java输出的比较

相同点:

都是向浏览器输出数据

不同点:

1.语法范畴不同
out.println()属于Java语法范畴 <% %>
<%= %>表达式输出 属于jsp语法范畴
2. 输出特点
out.println()输出 使用out内置对象,
不符合MVC模式要求。
<%= %>表达式输出 使用response内置对象。
符合MVC模式要求。
3.使用方式
out.println()输出 比较复杂
<%= %>表达式输出 比较简单
结论:推荐使用<%= %>表达式输出

实现99乘法表0

<html>
<head>
	<title>JSP</title>
</head>
<body>
<%
	// 打印9×9的表格
	out.println("<table border=\"1\">") ;
	for(int i=1;i<10;i++)
	{
		out.println("<tr>") ;
		for(int j=1;j<10;j++)
		{
			out.println("<td>"+i*j+"</td>") ;
		}
		out.println("</tr>") ;
	}
	out.println("</table>") ;
%>
</body>
</html>

优点:结构性好.
缺点:1.代码复杂 2.执行效率低.
作业

  1. 使用jsp实现9×9乘法表上三角型
  2. 使用HTML实现9×9乘法表上三角型
<html>
<head>
	<title>JSP</title>
</head>
<body>
<table border="1">
<%
	// 打印9×9的表格
	for(int i=1;i<10;i++)
	{
%>
		<tr> <!-- <tr>标签定义 HTML 表格中的行。 -->
<%
		for(int j=1;j<10;j++)
		{
%>
			<td><%=i*j%></td> <!-- <td>标签定义 HTML 表格中的列。 -->
<%
		}
%>
		</tr>
<%
	}
%>
</table>
</body>
</html>

相对于上面的代码
优点:1.简单 2. 执行效率高
缺点 结构性不好,难以维护
结论:jsp页面尽量不要使用<% %>嵌入原生Java程序。

语法< form >(生成表单)

带有两个输入字段和一个提交按钮的 HTML 表单

<form action="demo_form.jsp" method="get">
  First name: <input type="text" name="fname"><br>
  <!--如果这里是 First name: <input type="text" name="fname"value = 22><br> 则会自动在text文本框中填写 22-->
    <!--如果这里是 First name: <input type="text" name="fname"value = 22readonly> 则会自动在text文本框中填22 而且加了readonly 就会使在文本框里的22不能被修改-->
  Last name: <input type="text" name="lname"><br>
  <input type="submit" value="提交">
</form>

第一行的文本框叫 First name 获取的参数名叫 fname
第二行的文本框叫 Lastname 获取的参数名叫 lname
提交按钮叫 提交
将这些数据提交到demo_form.jsp里面
如果请求是 method=“get” 则获取的数据fname和lname会显示在协议头里面(也就是链接上 ) 不安全可见
如果请求是 method=“post” 则会不放在协议头里面 安全不可见

语法<%@ %> (静态代码)

<%@ page contentType = “text/html;charset = UTF-8” %>

完成对当前页面的汉字进行静态编码
一般在页面的开头
对 text或者html进行编码
这条指令也只能写一个
这条指令只对当前页面有效
作用: 从这个指令开始扫描 开始找汉字 对汉字变成UTF-8编码

<%@ page import = “包”%>(引入包)

page指令

1.指定当前jsp页面的属性 ( ̄︶ ̄)↗ 
2.设定页面MIME类型

include指令

<%@ include file = “文件名”%>(静态包含)

把file后面的文件内容包含到当前页面 例如一些jsp内容 或者txt,inc
这样可以少写很多重复内容
先包含 再执行 容易出问题 先把文件中的内容先整体放进来 再执行文件中的内容 重定义
静态问题:如果该文件中也包含了 就会出错
动态问题:如果该文件中和外部都定义了局部变量 也会报错

不识别被包含页面的类型

标签包含<jsp:include page = “文件名”>(动态包含)

如果被包含页面时动态页面则 先执行 后包含 避免动态问题 就是先执行文件中的内容 最终把结果包含进来就行
如果被包含的文件是属于静态页面则只是进行单纯的包含 不执行 会把相应代码直接发送给浏览器
<jsp:include page = “文件名”>
<jsp:param name = “ref1”
value = “2”/>//这样就向被包含的页面传了参数名为ref1的 值为2的参数
当前页面能向被包含页面传参数
可以识别被包含页面的类型

实现99乘法表

动态处理用户的请求

在这里插入图片描述

<html>
<head>
	<title>JSP</title>
</head>
<body>
<%
	// 接收参数  从表单接收用户数据(乘法表的行列)
	String t_row = request.getParameter("rownum") ;
	String t_col = request.getParameter("colnum") ;
    System.out.println("***"+t_row);
	System.out.println("***"+t_col);
	// 将字符串变为整数
	int row =10;
	int col =10;
	//row = Integer.parseInt(t_row);
	try
	{
		 row = Integer.parseInt(t_row) ;
		col = Integer.parseInt(t_col) ;
	}
	catch(Exception e)
	{
%>
		Input Error!!!
<%
	}
%>
<table border="1">
<%
	// 打印9×9的表格
	for(int i=1;i<=row;i++)
	{
%>
		<tr>
<%
		for(int j=1;j<=col;j++)
		{
%>
			<td><%=i*j%></td>
<%
		}
%>
		</tr>
<%
	}
%>
</table>
</body>
</html>

<%@taglib…%>指令:引入相应的标签库

MVC设计模式

主要是将视图组件与控制组件分离
servlet主要是接收所有客户端的请求 然后根据请求调用相应的JavaBean,并将所有的显示结果交给JSP完成
该模式被分为3个核心层:模型层(Model)、显示层(View)和控制层(Controller)
模型层:负责用户的请求参数 处理用户的数据 最后把处理好的数据交给显示层显示
显示层:接收servlet传递的内容 调用Javabean将内容显示给用户
控制层:完成一个独立的业务操作组件。一般都是以JavaBean的形式进行定义的

指令include和标签的区别

指令:<%@include file=“文件路径”%>
标签:<jsp:include page=“文件路径”/>
相同点:
把被包含页面包含到当前页面中
不同点
指令:jsp范畴 先包含再执行 主要用于静态包含 不可传参数
标签:java语言 先执行再包含 主要用于动态包含 可以传参数

客户端,服务端跳转的区别

(request.getRequestDispatcher(“跳转页面”).forward(request,response))服务端:
不会更改地址 执行到该语句的时候会立刻执行跳转 后面的代码不会执行 可以传参 不可重新传参
不改地址 执行到该语句立刻执行 后面代码不执行 可传参 不可冲重新传参
(response.sendRedirect(“跳转页面”))客户端:
会更改地址 真正是浏览器完成的跳转 执行完该语句后面还会执行 不可传参数 可以重新传参
地址会被更改 浏览器完成的跳转 后面代码还会执行 不可传参 可重新传参

理解POST 和GET请求。

Get请求:请求参数在HTTP协议头,基本都可以发get请求,但是参数可见,不安全。
Post请求:请求参数在HTTP协议体,只有表单能发post请求参数不可见,安全。

为什么application可以通过getRealPath()方法,取得虚目录的真实路径。

原因:1)该方法从request内置对象中取得请求字符串;
2)对请求字符串进行分析取得项目的虚名;
3)到servlet.xml文件中通过虚名工作目录找到真实路径
16、将一个jsp页面保存在WEB-INF文件夹之下,

如何通过配置web.xml文件访问该页面。

进行如下配置:

zte
/WEB-INF/hello.jsp

zte /a4

用图形和文字描述hello.jsp的执行过程

①打开Tomcat
②向浏览器发送请求 (也就是输入网址)
③通过请求找到webapps下与项目名对应的目录,找到hello.jsp文件
④Tomcat把hello.jsp转换成hello_jsp.java
⑤将hello_jsp.java转化为hello_jsp.class文件
⑥Tomcat调用jdk的虚拟机,执行class文件中的动态代码
⑦通过HTTP协议(response)将动态结果返回浏览器

请写出9个内置对象的生存周期和功能

request 接受和传递数据 请求来了创建 请求结束销毁
response 将结果数据放在HTTP协议里给浏览器显示 同上
out 将结果信息传给给浏览器显示 请求来了创建,请求结束销毁

session 传递验证信息 用户第一次发请求访问服务器的动态组件时创建,用户下线时销毁
page/pageContext 存放临时数据 访问JSP页面时创建,离开页面时销毁

application 传递公共信息 服务器启动时创建,服务器关闭时销毁,只创建一个
config 传递web.xml中配置信息的初始参数 服务器启动时创建,服务器关闭时销毁,只创建一个
exception 传递异常信息 服务器启动时创建,服务器关闭时销毁,只创建一个

表单和超链接发请求

相同点:客户端发请求,自动发http协议
不同点:语法不同
表单:利于交互 有post请求更安全
超链接:代码简单
结论:考虑到交互和安全时用表单 图方便用超链接

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要创建一个HTML表单,然后使用JSP(JavaServer Pages)来动态生成表单。在JSP中,你可以使用JSTL(JSP标准标记库)和EL(表达式语言)来简化代码。 以下是一个简单的用户注册表单的示例JSP代码: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>User Registration Form</title> </head> <body> <h1>User Registration Form</h1> <form method="post" action="register.jsp"> <p> <label for="username">Username:</label> <input type="text" id="username" name="username" required> </p> <p> <label for="password">Password:</label> <input type="password" id="password" name="password" required> </p> <p> <label for="email">Email:</label> <input type="email" id="email" name="email" required> </p> <p> <label for="birthdate">Birthdate:</label> <input type="date" id="birthdate" name="birthdate" required> </p> <p> <input type="submit" value="Register"> </p> </form> </body> </html> ``` 在此示例中,我们创建了一个包含四个字段的表单:用户名、密码、电子邮件和出生日期。每个输入字段都使用HTML5验证属性`required`,这意味着用户必须填写这些字段才能提交表单。 我们还在表单的`action`属性中指定了一个JSP文件`register.jsp`,该文件将处理表单数据并将其保存到数据库中。 在`register.jsp`文件中,你可以使用`request.getParameter("fieldname")`方法来获取提交的表单数据,然后使用JDBC连接到数据库并将数据插入到用户表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值