JavaWeb中的表单提交和超链接请求传递参数


1. HTML提交表单

HTML提交表单简单易操作,依靠在<form>标签对中的<input type='submit'>提交按钮进行请求发送和参数提交。其中form标签的post属性决定提交方式是get还是post。 
jsp代码

  1. <form action="servlet" method="post">//action后面的就是表单提交后的位置,这里我们提交给servlet来处理,method为提交方式,一般有隐私数据的都用post提交方式,提交的数据超过1024k也需要使用post提交方式。

  2. 账号:<input type="text" name="name_user" value="user">//name为属性名字,后面获取数据时一定要与name对应,value为属性值,这里面的值就是你要提交的值,后面获取到的也是这个值。

  3. 密码:<input type="password" name="name_pwd" value="pwd">

  4. <input type="submit" value="提交表单">

  5. </form>

servlet根据name属性获取提交的参数 
Java代码

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class servlet extends HttpServlet{
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("name_user");
                String password = request.getParameter("name_pwd");
                System.out.println("username"+","+"password");
               }
}

注意写servlet一定要配置web.xml文件,并且重启服务器。

在服务器端点击提交按钮后,控制台输出结果:

最后输出结果为:user,pwd

2. HTML超链接请求

只使用html发送超链接请求的话,方式比较单一。传递参数值是被写死的,并且只能使用get方式去发送请求。如果不用JavaScript的话,超链接还是作为一个页面跳转按钮比较合适。 
jsp代码

<a href="servlet/TestServlet?name_user=aaa&name_pwd=bbb">超链接请求</a>

 

java代码

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class servlet extends HttpServlet{
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("name_user");
                String password = request.getParameter("name_pwd");
                System.out.println("username"+","+"password");
               }
}

 

注意写servlet一定要配置web.xml文件,并且重启服务器。

在服务器端点击提交按钮后,控制台输出结果:

最后输出结果为:aaa,bbb

3. Javascript提交表单

使用js和html提交表单的话就可以灵活很多,因为js不仅有针对页面很多的触发事件,而且可以获取到html页面元素的信息。看一下几个简单的例子。

3.1 form表单提交前触发事件

这里主要是介绍下在提交form表单之前的onsubmit事件,这个事件会被作为用户输入数据校验的入口。不过仍然因为js使html页面的灵活性变高,这种前端校验用户输入的方式也不是那么唯一。 
jsp代码

  1. <form id="test" onsubmit="test_onsubmit();">

  2. 账号:<input type="text" name="name_user" id="id_user"/>

  3. 密码:<input type="password" name="name_pwd" id="id_pwd"/>

  4. <input type="submit" value="提交表单">

  5. </form>

javascript代码

  1. function test_onsubmit(){

  2. alert("提交表单前先进入到这个js函数");

  3. //使用js获取到id为test的这个表单

  4. var frm = document.getElementById("test");

  5. //设置这个表单的提交路径

  6. frm.action = "servlet/TestServlet";

  7. //设置这个表单提交的方式

  8. frm.method = "post";

  9. //提交表单

  10. frm.submit();

  11. }

 

在test_onsubmit()函数中,可以选择进行任意其他操作,包括设置post还是get方式去提交表单,或者说获取用户输入内容,对其内容进行前端校验。 
java代码

  1. String username = request.getParameter("name_user");

  2. String password = request.getParameter("name_pwd");

 

3.2 使用button或者超链接标签提交表单

使用button或者超链接去提交表单的话,主要是利用onclick触发事件去调用一个js函数,然后在函数中去进行表单提交。这时候就不需要<input type='submit'>标签去提交表单了。 
jsp代码

  1. <form id="test">

  2. 账号:<input type="text" name="name_user" id="id_user"/>

  3. 密码:<input type="password" name="name_pwd" id="id_pwd"/>

  4. </form>

  5.  
  6. <input type="button" value="input_button标签" onclick="submit_frm();">

  7. <button onclick="submit_frm();">button标签</button>

  8. <a onclick="submit_frm();" href="#">a标签</a>

 

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

javascript代码

  1. function submit_frm(){

  2. var frm = document.getElementById("test");

  3. frm.action = "servlet/TestServlet";

  4. frm.method = "post";

  5. frm.submit();

  6. }

java代码

  1. String username = request.getParameter("name_user");

  2. String password = request.getParameter("name_pwd");

4. Javascript超链接请求

使用js去处理html的超链接请求时,就可以动态的设置传递参数,以及传递参数的数值。由于<a>标签请求的提交需要window.location对象,提交超链接请求仍是get方式。

注意: 直接使用js,也可以将超链接请求参数提交方式修改为post,由于jQuery中封装的要好很多,这里就不记了。点这里可以看到实现。

jsp代码

  1. 账号:<input type="text" name="name_user1" id="id_user"/>

  2. 密码:<input type="password" name="name_pwd1" id="id_pwd">

  3. <a href="#" onclick="submit_a();">提交这两个参数的值</a>

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

javascript代码

  1. function submit_a(){

  2. //获取用户输入的值

  3. var username = document.getElementById("id_user").value;

  4. var password = document.getElementById("id_pwd").value;

  5. //拼接url

  6. var url = "servlet/TestServlet?";

  7. url += "username="+username+"&password="+password;

  8. //重新定位url

  9. window.location = url;

  10. }

java代码

  1. String username = request.getParameter("username");

  2. String password = request.getParameter("password");

5. jQuery提交表单

jquery提交表单有两种,第一种就是只提交表单中的内容,没有额外数据提交,这种比较简单。还有一种就是不仅提交表单的内容,而且增加一些额外的参数与表单内容一起提交。

5.1 只提交表单内容

jsp代码

  1. <form id="test">

  2. 账号:<input type="text" name="name_user" id="id_user"/>

  3. 密码:<input type="password" name="name_pwd" id="id_pwd"/>

  4. </form>

  5. <button id="sub_jQuery">jQuery</button>

jQuery代码

 
  1. $(document).ready(function(){

  2.  
  3. //创建id为sub_jQuery的button的单击事件

  4. $("#sub_jQuery").click(function(){

  5. //设置表单id为test的请求路径和方式

  6. $("#test").attr("action","servlet/TestServlet");

  7. $("#test").attr("method","post");

  8. //提交id为test的表单

  9. $("#test").submit();

  10. });

  11.  
  12. });

 

注意:这里写法就很灵活,比如用bind去创建click事件,用其他的html标签触发事件,获取表单中的用户输入数据之类进行处理什么的都可以。

java代码

  1. String username = request.getParameter("name_user");

  2. String password = request.getParameter("name_pwd");

 

5.2 提交表单以及额外内容

这种提交方式就是所有表单提交和超链接请求中最为灵活的提交方式了,也是目前做的项目中最常见的页面提交方式。

jsp代码

  1. <form id="test">

  2. 账号:<input type="text" name="name_user" id="id_user">

  3. 密码:<input type="password" name="name_pwd" id="id_pwd">

  4. </form>

  5.  
  6. <p id="id_p" name="name_p">p标签中的内容</p>

  7. <p><input type="checkbox" name="name_checkbox" value="A">A选项</p>

  8. <p><input type="checkbox" name="name_checkbox" value="B">B选项</p>

  9. <p><input type="checkbox" name="name_checkbox" value="C">C选项</p>

jQuery代码

  1. $(document).ready(function(){

  2.  
  3. //创建id为sub_jQuery的button的单击事件

  4. $("#sub_jQuery").bind("click",function(){

  5. //获取表单外的段落内容和checkbox复选框的选中值

  6. var p_value = $("#id_p").html();

  7. var check_value = [];

  8. $("input[name='name_checkbox']:checked").each(function(){

  9. check_value.push($(this).val());

  10. });

  11. //将id为test的表单提交的input参数进行序列化

  12. var form_value = $("#test").serialize();

  13. //拼接提交的路径

  14. var url = "servlet/TestServlet";

  15. //将表单外的提交内容拼接到路径中

  16. url += "?url_p="+p_value+"&url_check="+check_value;

  17. //使用post方式提交表单以及额外的参数

  18. $.post(url,form_value);

  19. });

  20.  
  21. });

 

java代码

  1. String username = request.getParameter("name_user");

  2. String password = request.getParameter("name_pwd");

  3. String pValue = request.getParameter("url_p");

  4. String urlCheck = request.getParameter("url_check");

注意:

1. 这里写的这个小例子中,对于表单外的参数提交是靠拼接url完成的。

2. 这个checkbox主要是作为个js数组参数传递的示例,不同于在form表单中提交的checkbox,后台java获取数组的方式是:

request.getParameterValues("param_name");

然而拼接成url之后,后台获取方式变成了字符串获取,得到的是带逗号分隔的数组字符串数值,那么后台java获取只能是:

request.getParameter("param_name");

3. 在现在做的项目中,既然拼接字符串无法传递数组给后台,所以正常都传递JSON字符串。页面创建的JSON对象转化为字符串,然后后台通过JSON的解析包去解析。千万别忘了js转换JSON对象为字符串:

var json_str = JSON.stringify(json_object);

4. 针对$.post( )函数,详细的可以看看这里

jQuery超链接请求

jQuery对超链接请求的操作,就有点像上面这个提交表单和额外参数的demo,不过因为没有表单,所以超链接请求提交的参数都是额外的参数,或者说是任意想要提交的参数。 
jsp代码

  1. 账号:<input type="text" name="name_user" id="id_user">

  2. 密码:<input type="password" name="name_pwd" id="id_pwd">

  3. <a href="#" id = "id_a">jQuery提交这两个input的值</a>

注意: a标签的href属性必须设置为#,因为a标签默认会发生跳转。

jQuery代码

  1. $(document).ready(function(){

  2.  
  3. //创建id为id_a的超链接标签单击事件

  4. $("#id_a").bind("click",function(){

  5. //获取想要传递参数的数值

  6. var url_user = $("#id_user").val();

  7. var url_pwd = $("#id_pwd").val();

  8. //拼接url

  9. var url = "servlet/TestServlet?";

  10. url += "url_user="+url_user+"&url_pwd="+url_pwd;

  11. //使用post方式提交请求和参数

  12. $.post(url);

  13. });

  14.  
  15. });

 

java代码

  1. String username = request.getParameter("url_user");

  2. String password = request.getParameter("url_pwd");

 

easy-ui的datagrid请求提交

这里写一个简单datagrid的提交,在datagrid的提交中,由于又有一层封装好的方法,所以使用起来更为简单明了。 
jsp代码

  1. <div style="height:340px;">

  2. <table id="id_table" fit="true"></table>

  3. </div>

  4. <div id="footer" style="padding:4px;text-align:right">

  5. 查询条件1:<input type="text" id="id_queryparams_1">

  6. 查询条件2:<input type="text" id="id_queryparams_2">

  7. <a href="#" class="easyui-linkbutton" onclick="querydata();">提交查询条件</a>

  8. </div>

jQuery代码

  1. $(document).ready(function(){

  2. //创建datagrid数据表格

  3. $('#id_table').datagrid({

  4. loadMsg:'正在加载...',

  5. url: '',

  6. //使用datagrid的分页功能

  7. pagination: true,

  8. pageSize: 10,

  9. pageList: [10, 15, 20, 25, 30],

  10. fit:true,

  11. rownumbers:true,

  12. striped:true,

  13. toolbar:'#c',

  14. showFooter:true,

  15. singleSelect:true,

  16. checkOnSelect: true,

  17. selectOnCheck:true,

  18. //测试显示的数据域名称,不用关心

  19. columns:[[

  20. {field:'sid',title:'sid',checkbox:true},

  21. {field:'producer',title:'PRODUCER'},

  22. {field:'drug_code',title:'DRUG_CODE'},

  23. {field:'drug_name',title:'DRUG_NAME'},

  24. {field:'act_quanity',title:'ACT_QUANIYT'},

  25. field:'drug_name',title:'DRUG_NAME'}

  26. ]]

  27. });

  28.  
  29. });

  30.  
  31. function querydata(){

  32. //获取用户输入的数据

  33. var query_params1 = $("#id_queryparams_1").val();

  34. var query_params2 = $("#id_queryparams_2").val();

  35. //设置提交的路径

  36. $("#id_table").datagrid("options").url="servlet/TestServlet";

  37. //提交请求-也就是给datagrid加载数据

  38. $('#id_table').datagrid('load',{

  39. //提交获取的参数

  40. query_params_dg_1 : query_params1,

  41. query_params_dg_2 : query_params2,

  42. comments : "测试数据"

  43. });

  44. }

 

注意: 在确认使用datagrid的分页功能之后,也就是pagination的属性为true,提交参数时,easy-ui会多封装2个参数传递到后台。分别是page(当前第几页)和rows(每页记录数)。

java代码

  1. String qp1 = request.getParameter("query_params_dg_1");

  2. String qp2 = request.getParameter("query_params_dg_2");

  3. String comments = request.getParameter("comments");

  4. //获取datagrid当前第几页

  5. int page = Integer.parseInt(request.getParameter("page"));

  6. //获取datagrid每页记录数

  7. int rows = Integer.parseInt(request.getParameter("rows"));

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Installanywhere打包javaweb项目 一 准备阶段 由于我们打包的是javaweb项目,实现的目标是在一台没有javaweb项目运行环境下,可以通过一键安装后执行我们的项目客户机上,那么,我们需要准备如下文件 1、jdk -- 可以直接将你本机下安装好的jdk拷贝,如 2、Tomcat -- 由于客户可能是不懂软件的,那么我们就需要下载一个免安装解压版的Tomcat,直接去官网下载 3、Mysql -- 同理,下载免安装版的mysql数据库 二 预处理阶段 1、对Tomcat进行部分优化,具体根据情况而定,我这里做了适当优化 2、将要运行的项目打成war包 放入Tomcat下的webapps下,尽量保证你的项目开发依赖的Tomcat和该Tomcat版本一直吧 3、往mysql目录下添加文件夹和文件,如: data : 存放数据库数据的,在后面的脚本可能要用到,这里提前创建,避免脚本出 错 sql : 这里用于存放你从本地库导出的数据库脚本.sql文件,具体也不一定会用到 ,主要看后面的脚本如何编写 my.ini: 这是windows下的配置文件,配置了mysql的信息,解压版是没有该文件的 手动创建一个,内容可以为空,也可以不为空,放入些基本的配置,我这里是直接为空的 为了后面installanywhere动态插入配置方便 4、将jdk, tomcat, mysql全部放入一个文件夹下如: Install.bat : 该文件用于注册和启动Tomcat,mysql的服务 set Path=%SystemRoot%\system32 set JAVA_HOME=%1%\jdk set CATALINA_HOME=%1%\tomcat set mysql_home=%1%\mysql net stop mysql5 call %1%\mysql\bin\mysqld --remove mysql5 call %1%\mysql\bin\mysqld --install mysql5 sc config mysql5 start= auto net start mysql5 call %mysql_home%\bin\mysqladmin -h localhost -u root password 123 call %mysql_home%\bin\mysql -hlocalhost -uroot -p123 <%mysql_home%\sql\one.sql net stop mytomcat call %1%\tomcat\bin\service remove mytomcat call %1%\tomcat\bin\service install mytomcat sc config mytomcat start= auto net start mytomcat uninstall.bat : 该文件用于停止并注销删除服务 set Path=%SystemRoot%\system32 set JAVA_HOME=%1%\jdk set CATALINA_HOME=%1%\tomcat net stop mytomcat net stop mysql5 call %1%\tomcat\bin\service remove mytomcat call %1%\mysql\bin\mysqld --remove mysql5 start.bat : 用于手动启动服务 set Path=%SystemRoot%\system32 net start mytomcat stop.bat : 用于手动关闭服务 set Path=%SystemRoot%\system32 net stop mytomcat one : 这个是用于制作应用程序打开的快捷方式 是一个.url文件 -- one.url 1.ico : 图片文件,用于快捷方式和或安装文件的图标 三 installanywhere 制作 注:产品名称就是那个会在windows开始菜单栏显示的文件夹名字 添加四个环境变量:就是会添加到windows下的高级属性设置的那个环境变量那里 JAVA_HOME $USER_INSTALL_DIR$\jdk CATALINA_HOME $USER_INSTALL_DIR$\tomcat CATALINA_DIR $USER_INSTALL_DIR$\tomcat\bin PATH $USER_INSTALL_DIR$\jdk\bin;$USER_INSTALL_DIR$\mysql\bin;$USER_INSTALL_DIR$\tomcat\bin 接下来制作快捷方式和开始菜单栏的选项 其的程序快捷方式制作 [InternetShortcut] URL="http://localhost:8082/test" IconFile=$USER_INSTALL_DIR$$\1.ico HotKey=0 IconIndex=0 IDList= 开始菜单栏的卸载菜单制作 动态修改配置文件 这里我们先将mysql的my.ini文件进行修改,因为这个文件有两个属性的值是用户在选择安装目录的时候传进来的,所以要修改,但是,我的文件内容是空的,就直接插入配置文本 我的文本模板是: [client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 #安装路径 basedir="$USER_INSTALL_DIR$\\mysql" #数据路径 datadir="$USER_INSTALL_DIR$\\mysql\\data" # 允许最大连接数 max_connections=200 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [WinMySQLAdmin] $USER_INSTALL_DIR$\bin\mysqld.exe 后面再来执行安装注册时的批处理命令 -- 其Command Line: cmd /c $USER_INSTALL_DIR$\install.bat $USER_INSTALL_DIR$ cmd /c表示执行指定的命令并断。 $USER_INSTALL_DIR$是传递给install.bat%1%的参数。 并且,选Options的3个选项。 将该Execute Command移动到Panel: Install Complete前面。 配置安装安程序后自动打开页面 反安装:配置卸载批处理 -- 菜单Pre-Uninstall>,按钮Add Action>Execute Command>Add>。 Command Line:  cmd /c $USER_INSTALL_DIR$\uninstall.bat $USER_INSTALL_DIR$ 将该Execute Command移动到第一个。 选Options的3个选项。 放在倒数第二的原因是:表示要等到选择完需要卸载的项后再执行,避免用户点击取消,把服务给注销了
<h3>回答1:</h3><br/>要获取session的参数,可以使用HttpServletRequest对象的getSession()方法来获取session对象,然后使用session对象的getAttribute()方法来获取参数值。例如: ```java HttpServletRequest request = ...; // 获取HttpServletRequest对象 HttpSession session = request.getSession(); // 获取session对象 String paramValue = (String) session.getAttribute("paramName"); // 获取参数值 ``` 其,"paramName"是要获取的参数名,需要根据实际情况进行替换。注意,getAttribute()方法返回的是Object类型,需要进行类型转换。 <h3>回答2:</h3><br/>在Javaweb开发,session是一个非常重要的概念,它是服务器用来记录与客户端之间交互状态的一种技术。在HTTP协议由于是无状态的,服务器需要保留客户端请求的状态,因此使用session技术可以满足这一需求。 获取session参数的方式多种多样,下面我将介绍几种常见的获取session参数的方法: 1、通过getAttribute()方法获取session参数 在JavaWeb,我们可以通过setAttribute()方法设置session的参数,而在需要获取这个参数时,我们可以通过getAttribute()方法来获取它。 实现代码如下: ```java HttpSession session = request.getSession(); String username =(String)session.getAttribute("username"); ``` 2、通过JSP页面获取Session参数 在JSP页面,我们可以使用EL表达式和JSTL标签库来获取Session的参数。在使用EL表达式时,只需在需要获取的变量前面加上"sessionScope"即可。 实现代码如下: ```java ${sessionScope.username} ``` 而在使用JSTL标签库获取Session的参数时,只需使用<c:out>标签即可。 实现代码如下: ```java <c:out value="${sessionScope.username}"/> ``` 3、通过HttpServletRequest对象获取Session参数 我们还可以使用HttpServletRequest对象获取Session的参数,获取Session参数的方法与获取参数类似。 实现代码如下: ```java String username = request.getSession().getAttribute("username").toString(); ``` 总之,获取Session的参数是JavaWeb开发非常重要的操作,开发人员们需要掌握以上多种常见的获取Session参数的方法,以便根据具体的开发需求灵活运用。 <h3>回答3:</h3><br/>在Java Web开发,我们经常需要获取session存储的数据,然后进行相应的操作。获取session参数有多种方法,具体如下: 1. 使用request.getSession().getAttribute()方法 在JSP或Servlet,我们可以通过HttpServletRequest对象的getSession()方法来获取session对象,然后使用getAttribute()方法获取session的参数,例如: ``` HttpSession session = request.getSession(); String username = (String)session.getAttribute("username"); ``` 上述代码,我们先通过getSession()方法获取到session对象,然后使用getAttribute()方法获取session名为“username”的参数,并将其转换为字符串类型。 2. 使用EL表达式 在JSP页面,我们还可以使用EL表达式获取session的参数,例如: ``` ${sessionScope.username} ``` 上述代码,我们使用sessionScope对象来访问session的参数,其“username”就是我们想要获取的参数名称。 3. 使用HttpSessionBindingListener接口 我们还可以使用HttpSessionBindingListener接口来获取session的参数。需要实现该接口的类,在session存储时会触发valueBound()方法,我们可以在该方法获取session的参数,例如: ``` public class MySessionListener implements HttpSessionBindingListener { private String username; public MySessionListener(String username) { this.username = username; } @Override public void valueBound(HttpSessionBindingEvent event) { HttpSession session = event.getSession(); String username = (String)session.getAttribute("username"); System.out.println("获取到session的参数:" + username); } @Override public void valueUnbound(HttpSessionBindingEvent event) {} } ``` 上述代码,我们定义了一个实现了HttpSessionBindingListener接口的类MySessionListener,然后在其valueBound()方法获取session的参数,并进行相应的处理。在存储该对象时,也需要在session加入一个新的参数,例如: ``` HttpSession session = request.getSession(); MySessionListener listener = new MySessionListener("test"); session.setAttribute("MySessionListener", listener); ``` 上述代码,我们在session加入了一个名为“MySessionListener”的参数,其值为listener对象。这样,当listener对象存储到session时,就会触发valueBound()方法,从而获取到session的参数。 总的来说,获取session的参数有多种方法,我们应该根据具体的情况选择适当的方法。需要注意的是,在获取session的参数时,我们应该确保session对象已经创建,否则会出现NullPointerException错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一生所Ai

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值