idea构建post请求_详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)

本篇博客是 Spring+Maven+Mybatis+MySQL+Junit SSM 框架搭建的下篇,主要讲解了如何在 Spring MVC 中处理页面跳转,包括简单跳转、参数传递的跳转以及 GET 和 POST 请求的使用。通过实例展示了GET和POST请求的区别,并实现了登录和注册功能,包括加密密码、MD5等安全措施。
摘要由CSDN通过智能技术生成

在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉的朋友,可以先看看上一篇博文)那么本篇博文介绍介绍springmvc前后台的交互。

v简单页面跳转

我们首先修改index.jsp文件,实现一个页面跳转。

在views文件夹下面建一个jsp文件,就是上面所需要跳转的页面。

对应的实现页面跳转,完善这个功能,增加映射,可以处理对跳转中的/message/go作出响应,在controller包里面新建java文件,格式:Controller.java,以示他是用来控制请求的,这里新建文件messageController.java

注意在开头加一个"@Controller",@Controller标识一个Spring类是Spring MVC controller处理器, 也就是加了@Controller,这个文件就会被spring认为是处理请求的

接着开始写函数,@RequestMapping() 里面写链接,@RequestMapping() 注解可以在控制器类的级别和/或其中的方法的级别上使用。

注意函数名称可以随便起,重要的是需要对应的url映射和返回的文件 。点击运行启动项目。效果如下图:

点击"我要跳转了...", 跳转至新建的jsp页面。OK,跳转页面的小目标就此实现。

v综合页面跳转

需求:在页面上输入一个用户名,然后根据这个用户名跳转到这个用户的详情页。

改造index.jsp, 增加可以输入用户名的框框。

添加控制的跳转函数,

@PathVariable可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过,@PathVariable("xxx") 绑定到操作方法的入参中。

新建用户详情页

点击运行,实现效果如下:

vform表单

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

在实际操作的时候,就get和post两种用的比较多。这里主要介绍get和post

GET

1.改造index.jsp,添加get方式的form表单

2.添加处理get请求的函数

3.根据get请求最终展示数据的报表页

4.点击运行,效果如下:

输入开始和结束时间,点击查找报表

POST

1.改造index.jsp,添加post方式的form表单

2.添加处理post请求的函数

3.根据post请求最终展示数据的报表页

报表页共用GET方式的报表页。

4.点击运行,效果如下:

输入开始和结束时间,点击查找报表

v注册登录

大部分网站都绕不开登录和注册,那就来讲讲springmvc登录注册的简单实现。

首先创建一个用户表

再用mybatis-generator自动生成的实体类,UserInfo

添加service层

UserinfoService

packagecom.springmvc.service;importcom.springmvc.entity.Userinfo;importjava.util.ArrayList;/*** Created by toutou on 2018/5/27.*/

public interfaceUserinfoService {intinsert(Userinfo record);

ArrayListselectSelective(Userinfo record);

}

View Code

UserinfoServiceImpl

出于用户账号安全的考虑,一般用户密码都需要进行加密,这样只有用户自己知道自己的密码,采用MD5加密,附上方法。(简单的加密网上一搜一大堆,我这也是网上搜的)

packagecom.springmvc.util;importjava.security.MessageDigest;/*** Created by toutou on 2018/5/27.*/

public classEncryption {//MD5加码。32位

public staticString MD5(String inStr) {

MessageDigest md5= null;try{

md5= MessageDigest.getInstance("MD5");

}catch(Exception e) {

System.out.println(e.toString());

e.printStackTrace();return "";

}char[] charArray =inStr.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++)

byteArray[i]= (byte) charArray[i];byte[] md5Bytes =md5.digest(byteArray);

StringBuffer hexValue= newStringBuffer();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)

hexValue.append("0");

hexValue.append(Integer.toHexString(val));

}returnhexValue.toString();

}//可逆的加密算法

public staticString KL(String inStr) {//String s = new String(inStr);

char[] a =inStr.toCharArray();for (int i = 0; i < a.length; i++) {

a[i]= (char) (a[i] ^ 't');

}

String s= newString(a);returns;

}//加密后解密

public staticString JM(String inStr) {char[] a =inStr.toCharArray();for (int i = 0; i < a.length; i++) {

a[i]= (char) (a[i] ^ 't');

}

String k= newString(a);returnk;

}/*// 测试主函数

public static void main(String args[]) {

String s = new String("123123");

System.out.println("原始:" + s);

System.out.println("MD5后:" + MD5(s));

System.out.println("MD5后再加密:" + KL(MD5(s)));

System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));

}*/

/*** 创建指定数量的随机字符串

*

*@paramnumberFlag

* 是否是数字

*@paramlength

*@return

*/

public static String generateQC(boolean numberFlag, intlength) {

String retStr= "";

String strTable= numberFlag ? "1234567890":"1234567890abcdefghijkmnpqrstuvwxyz";int len =strTable.length();boolean bDone = true;do{

retStr= "";int count = 0;for (int i = 0; i < length; i++) {double dblR = Math.random() *len;int intR = (int) Math.floor(dblR);char c =strTable.charAt(intR);if (('0' <= c) && (c <= '9')) {

count++;

}

retStr+=strTable.charAt(intR);

}if (count >= 2) {

bDone= false;

}

}while(bDone);returnretStr;

}

}

View Code

注册

添加userController注册函数

添加注册页面register.jsp

登录

添加userController登录函数

packagecom.springmvc.controller;importcom.springmvc.entity.Userinfo;importcom.springmvc.service.UserinfoService;importcom.springmvc.util.Encryption;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.ModelAttribute;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importjavax.servlet.http.HttpSession;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;/*** Created by toutou on 2018/5/27.*/@Controllerpublic classuserController {

@AutowiredprivateUserinfoService userService;

@RequestMapping(value="/user/login", method =RequestMethod.GET)publicString login() {return "login";

}

@RequestMapping(value= "/user/login", method =RequestMethod.POST)publicString loginValidate(HttpSession session, Model model, @ModelAttribute Userinfo user) {

List list = new ArrayList();

Userinfo record= newUserinfo();

record.setName(user.getName());

list=userService.selectSelective(record);if (list.size() == 0) {

model.addAttribute("status", 1);

}else{

record.setPw(Encryption.MD5(user.getPw()));

list=userService.selectSelective(record);if (list.size() == 0) {

model.addAttribute("status", 2);

}

record= list.get(0);

session.setAttribute("userinfo", record);

model.addAttribute("status", 0);

}return "login";

}

}

View Code

添加登录页面login.jsp

User: toutouDate:2018/5/27

Time:16:07

Tochange this template use File | Settings | File Templates.--%>

登录页面

用户名:
密码:

//对应后台返回的提示

if('${status}' != '') {if('${status}' == 0) {

alert('登录成功,即将跳转至用户详情页!')

location.href= '/user/userInfo'}else if('${status}' == 1) {

alert('该账户不存在!');

}else if('${status}' == 2) {

alert('密码错误!')

}

}

View Code

添加userControlle个人中心函数

@RequestMapping(value="/user/userInfo", method =RequestMethod.GET)publicString userInfo(Model model, HttpSession session) {

Userinfo user= (Userinfo) session.getAttribute("userinfo");if(user != null){

model.addAttribute("user", user);

}return "userInfo";

}

View Code

添加个人中心页面userInfo.jsp

User: toutouDate:2018/5/27

Time:22:09

Tochange this template use File | Settings | File Templates.--%>

个人中心
欢迎您,${user.name}${user.sex?'女士':'先生'} 注销

对不起,请先登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值