SSM框架下实现form表单提交的方式

实现form表单的提交有多种方式,这里我们主要讲两种常用的。

:此Demo是在SSM框架下完成的,数据库采用MySQL,关于ssm整合的相关知识,这里不做过多赘述。主要展示表单提交方式,暂不考虑代码健壮性。

一、常见的form表单提交方式

       分析:常见的表单提交方式,在表单中添加一个submit按钮,当点击按钮后,通过请求表单的action中的url,跳转到表现层从而完成对表单内容的提交。

       弊端:当提交的数据量非常大时,所花费时间较长,我们需要等待页面响应完成后,才能进行其他操作。这样会影响用户体验。这样就可以使用ajax来完成form表单的提交。

 

 

二、使用ajax完成form表单提交

      分析:使用ajax异步请求来进行表单提交,这样在等待表单提交的时间里,我们可以在页面中进行其他操作,这样会有更好的用户体验。

 

 

 

三、注意事项

  • 在常用方式中,点击的登录按钮的type为"submit"类型;
  • 在常用方式中,form的action不为空;
  • ajax方式中需要注意的是$.ajax方法中的参数:dataType和data。

因为主要是做后端的,所以平时前端写的较少,级别也就是入门级别,能看懂能改而已,所以很多时候需要百度和查看其他技术人员的博客。这次,我参考的代码在$.ajax方法中设置的dataType参数值为"html"而不是"json",导致我在一开始调试的时候报错,最终是改成了"json"才成功,因此在这里特别说明并提醒一下,别和我一样走错了路,还有就是向服务端传输的data值了,像上面代码一样,将form表单中的数据序列化传输即可。

四、代码示例

jsp页面:testCommitForm.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户信息</title>
</head>
<body>

<%--常见的form表单提交方式--%>
<table>
    <h2 style="color: red">常见的表单提交方式:</h2><br>
    <form id="userInfo1" method="post" action="/addUserNormal">
        姓名:<input type="text" name="name"><br>
        年龄:<input type="text" name="age"><br>
        所在地:<input type="text" name="area"><br>
        结果:<h3>${msg}</h3><br>
        <input type="submit" value="提交">
    </form>
</table>
<br>
<br>
<br>

<%--使用jquery的ajax提交form表单--%>
<table>
    <h2 style="color: red">使用ajax实现表单提交:</h2><br>
    <form id="userInfo2" method="post">
        姓名:<input type="text" name="name"><br>
        年龄:<input type="text" name="age"><br>
        所在地:<input type="text" name="area"><br>
        结果:<h3 id="result"></h3><br>
        <input id="commit" type="button" value="提交">
    </form>
</table>

</body>
<script src="../js/jquery-3.3.1.js"></script>
<script>
    $(function () {
        $("#commit").click(function () {
            $.ajax({
                url: "/addUserAjax",
                type: "post",
                //.serialize() 当提交多条表单数据时,我们可以采用当表单进行序列化的方式简化原有的操作
                data: $("#userInfo2").serialize(),
                dataType: "json",
                success: function (result) {
                    if (result == "success") {
                        $("#result").html("添加成功");
                    } else {
                        $("#result").html("添加失败");
                    }
                }
            })
        })
    })
</script>
</html>

controller层:UserController

package com.javawangming.controller;

import com.alibaba.fastjson.JSON;
import com.javawangming.bean.User;
import com.javawangming.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/addUserNormal")
    @ResponseBody
    public ModelAndView addUserNormal(User user){
        ModelAndView mv=new ModelAndView();
        try {
            userService.addUser(user);
            mv.setViewName("testCommitForm");
        } catch (Exception e) {
            e.printStackTrace();
            mv.addObject("msg", "添加失败");
        }
        mv.addObject("msg", "添加成功");
        return mv;
    }


    @RequestMapping("/addUserAjax")
    @ResponseBody
    public String addUserAjax(User user){
        try {
            userService.addUser(user);
        } catch (Exception e) {
            e.printStackTrace();
            return JSON.toJSONString("false");
        }
        return JSON.toJSONString("success");
    }
}

javabean:User

package com.javawangming.bean;

public class User {
    int id;
    String name;
    int age;
    String area;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }
}

service层:UserService

package com.javawangming.service;

import com.javawangming.bean.User;

public interface UserService {
    void addUser(User user);
}

UserServiceImpl

package com.javawangming.service.impl;

import com.javawangming.bean.User;
import com.javawangming.dao.UserDao;
import com.javawangming.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public void addUser(User user) {
        userDao.addUserInfo(user);
    }
}

dao层:UserDao

package com.javawangming.dao;

import com.javawangming.bean.User;

public interface UserDao {
    void addUserInfo(User user);
}

UserDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.javawangming.dao.UserDao">
    <insert id="addUserInfo" parameterType="com.javawangming.bean.User">
        insert into user_info (name,age,area) values(#{name},#{age},#{area});
    </insert>
</mapper>

数据库表:user_info

CREATE TABLE `user_info` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `area` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

测试结果:

 

提交前:

 

 

提交后:

 

接下来,我们查看一下数据库,成功提交了表单数据。

有很多不足的地方欢迎大家指教。感谢阅读

  • 10
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
进去之后会触发一个页面刷新的方法,之后在里面填写寄存产品的信息 其中,会员信息和产品信息都是从数据库中查询出来的,可以进行自动赋值,还有寄存号是自动生成的随机数,之后金额的value也是在后台自动计算出来的。 吧台提取:负责人:(王涛) 首先,它会弹出一个dialog弹框,里面有一个文本框,里面填写的是寄存号,可以根据寄存号进行调价查询,之后,通过将查到的数据存放到session中,然后又会弹出一个dialog弹框 里面回显的寄存产品的信息,其中 他的值是在后台存入的session中取出来的 之后我们可以进行寄存产品的提取操作,这时后台会自动获取当前时间,来作为提取时间进行赋值。 会员信息查询中的送花功能;负责人:(王涛) 首先 只有在顾客的会员账号充值金额满一万元后,我们会赠送他一束花,这时,该会员信息后的送花按钮才可以使用,点击送花后,会弹出一个dialog弹框,里面的信息,是根据webservice调用了第一组发布的接口,其中我们用到了,webservice里面的框架技术 cxf生成一个沟通接口的桥梁,然后新建一个沟通桥梁的类,再通过配置相关的配置文件及jar包就可以调用出接口中的数据,之后选中一条数据,并输入收件人的邮箱 ,点击发送后,我们会将收件人邮箱和所送花朵的花语这两个参数进行打包,之后通过javamail技术,给所填收件人的邮箱发送一封邮件。 【发送邮件需要其专门的jar包】 用户体验度调查:负责人:(王涛) 首先,这个功能使用的也是javamail技术,我们在页面中将所有的文本框以及富文本放到了一个form当中,因为我们新建了一个专门用来存放发送邮件所需信息的实体类所以在方法接收参数时 只用接受一个实体类,其中,它的参数包括:(收件人邮箱,发件人邮箱,标题,内容){这个功能一般可以用于优惠活动的发送以及市场调查等等。。。} 【发送邮件需要其专门的jar包;还有要注意富文本编辑器和easyui js文件的兼容性问题】 业务管理: 负责人:(温家祥) 1:当前订 ①客户可在当前页面点进行商品的选购及选购数量 同时自动生成帐号和获取系统当前时间 ②在客户选完商品后可进行结账或删除订 1.会员结账:先通过会员卡号查询会员信息并赋值给结账页面 同时展示当前会员所点的所有商品及具体信息 通过输入 套餐费自动计算金额 并完成对会员金额的修改 结账完成之后 实时更新订信息 并记录账信息展示在前台 2.非会员结账:展示当前客户所点的所有商品和具体信息,通过手动输入套餐费自动计算应收金额 在输入实收金额自动 计算找零 确认结账之后实时更新订信息 并记录账信息展示在前台 3.删除订:通过获取当前的id 传到后台进行删除 我的网盘: 用户登陆时通过io流自动新建一个存储空间如果存在则打开 ①在后台查询数据在前台展示对应信息 !!!图片在前台通过循环在后台获取的数据进行展示 ②对网盘里的东西进行增删改查 总结:整体上看起来没有难度没有什么技术点 但逻辑思维紧密且对数据的传输跨度大 对数据库的修改较为复杂 采购进货负责人:(杨强) 客户可以直接新增,也可以点击以有信息进行回显新增 点击供商编号和项目编号可以选择辅助信息 输入价,数量,实付金额进行计算 新增YqT_cg,YqT_cgc,YqT_th,YqT_thc 修改YqT_goods,YqT_supplier 采购退货 客户可以直接退货,也可以点击以有信息进行回显退货 点击采购编号和项目编号可以选择辅助信息 输入价,数量,进行计算 修改yqt_thc,YqT_th,t_cgc,t_goods,t_supplier 库存明细 增删改查t_goods; 我的网盘 uploadify上传图片 springmvc配置multipartResolver config.properties里配置: filereal=D:\\tomcat2\\apache-tomcat8090\\webapps\\img realPath=http://192.168.3.5:8090/img/ js里导uploadify文件 配置D:\tomcat2\apache-tomcat8090\bin并启动 yq/util导UploadFile.java jsp页面在body中引入js文件 会员管理 负责人(韩苏雨) 会员管理模块 1、会员基本信息:主要是注册一些会员信息,然后用到了easyUI的格,新增会员时,主要是给会员卡号做出了一些判断,判断了会员卡号不能为空,不能重复,对于日期,是获取当前系统时间。 2、会员卡充值:首先对会员信息做了一个简的查询,然后点击会员卡号充值,弹出一个easyUI的弹框,然后,给会员卡一个点击事件,点击会员卡号,继续弹出一个弹框,是对会员卡号的查询,选择会员卡号,然后会对相应的姓名,余额等等进行回显,日期是获取当前系统时间,然后点击充值金额,然后让充值金额和余额相加,付给现有余额。 3、会员卡挂失/解挂:选择将要挂失或者解挂的会员卡号、会员姓名、身份 证号,对其进行挂失或解挂,从数据库查询。 4、会员卡查询:是查询会员卡明细情况,在查询窗口中选择要查询的会员卡号、会员姓名,击"确定"即可查询出该会员卡的情况。查询出来的信息不允许用户自行更改、添加和删除 5、其余一些注册、权限、以及一些前台页面等等。。。。。 财务管理负责负责人(陈帅任) 我做的是一个财务管理模块, 财务管理模块有以下功能 1.会员结账营业额 2.非会员结账营业额 3.商品采购付款 4.商品采购付款统计 5.套餐结账营业额 6.点结账营业额 7.比较额度 8.redis缓存 我的1.会员结账营业额2.非会员结账营业额4.商品采购付款统计7.比较额度这四个模块使用的是ECharts可视化图ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪盘,并且支持图与图之间的混搭。 基础信息负责人(高亚锟) 员工信息 员工 查询 新增 删除 员工的编号使用随机数 供货商信息 供货商 查询 新增 删除 同样的随机数 但是和业务模块相关联 需要把不需要展示的东西也要完成新增以便业务模块的需要 仓库信息 仓库 查询 新增 删除 商品类别 商品类别 查询 新增 删除 商品信息 这个是3联查新增修改都是需要弹框 只回显id 弹出来然后显示出另一个的所有数据 然后进行赋值 赋值进去的必须是disable框 disable框中数据和仓库信息的数据是正确的 但是不能修改 只能修改标的id 根据id再重新进行复制 最后在新增或者是修改 统计查询模块负责人(张炫林) 统一使用easyui框架下的组件保证页面的协调性 统计查询进入页面: 页面展示分页功能 条件查询功能(下拉式选择查询模式,查询项目) 查询模式为下拉动态获取必选与查询项目对应比如:时间有<>名字没有 查询项目下拉动态 取消筛选按功能 Mongodb 短信HttpClient
SSM框架可以使用Spring Security来实现系统的登录功能。 Spring Security是Spring框架的安全框架,它提供了一组全面的安全服务和API,可以在Spring应用程序中轻松地添加安全性。Spring Security可以用于实现身份验证、授权、角色管理等安全功能。 下面是Spring Security实现系统登录的步骤: 1. 导入Spring Security依赖: 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.2.2.RELEASE</version> </dependency> ``` 2. 配置Spring Security: 在Spring配置文件中添加以下配置: ``` <security:authentication-manager> <security:authentication-provider> <security:user-service> <security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"/> <security:user name="user" password="{noop}user" authorities="ROLE_USER"/> </security:user-service> </security:authentication-provider> </security:authentication-manager> <security:http auto-config="true"> <security:intercept-url pattern="/admin/**" access="ROLE_ADMIN"/> <security:intercept-url pattern="/user/**" access="ROLE_USER"/> <security:form-login login-page="/login" default-target-url="/index"/> <security:logout logout-success-url="/login"/> </security:http> ``` 上面的配置定义了两个用户admin和user,分别拥有ROLE_ADMIN和ROLE_USER角色。配置了拦截URL和访问权限、登录页面和默认的登录成功后跳转到的页面、注销成功后跳转到的页面。 3. 添加登录页面和控制器: 在登录页面中添加提交时会调用控制器中的登录方法。登录方法会调用Spring Security提供的API进行身份验证。 ``` @RequestMapping(value = "/login", method = RequestMethod.GET) public String loginPage() { return "login"; } @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(@RequestParam String username, @RequestParam String password, HttpServletRequest request) { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password); try { Authentication authenticate = authenticationManager.authenticate(token); SecurityContextHolder.getContext().setAuthentication(authenticate); return "redirect:/index"; } catch (AuthenticationException e) { request.setAttribute("error", "用户名或密码错误"); return "login"; } } ``` 4. 添加注销功能: 在控制器中添加注销方法: ``` @RequestMapping(value = "/logout", method = RequestMethod.GET) public String logoutPage(HttpServletRequest request, HttpServletResponse response) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { new SecurityContextLogoutHandler().logout(request, response, authentication); } return "redirect:/login"; } ``` 以上就是使用Spring Security实现系统登录的步骤。需要注意的是,以上只是一个简的示例,实际开发中还需要根据具体需求进行相应的配置和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值