springmvc 项目完整示例08 前台页面以及知识点总结
至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目
我们现在重新规划下逻辑
两个页面
一个登录页面
一个欢迎页面
登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面
并且,更新用户登录信息以及记录登录日志
login.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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
</head>
<body>
${Info}
请输入用户名,密码登陆:
<form action="/bbs/checkLogin.do" meathod="post">
用户名:
<input type="text" name="userName">
<br>
密码:
<input type="password" name="password">
<br>
<input type="submit" value="登陆">
<input type="reset" value="重置">
</form>
</body>
</html>
如果使用一些c标签需要<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
并且要引入jstl jar包
welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
</head>
<body>
登陆成功!
<br>
欢迎光临!
</body>
</html>
controller
package com.bbs.web;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.bbs.domain.User;
import com.bbs.service.UserService;
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping(value="/login")
public String toLoginPage(HttpServletRequest request){
return "login";
}
@RequestMapping(value="/checkLogin")
public String loginPage(HttpServletRequest request,User user){
Boolean loginSucess = userService.hasMatchUser(user);
if(loginSucess){
userService.loginSucess(userService.findUserByUserName(user));
request.getSession().setAttribute("Info","");
return "welcome";
}else{
request.getSession().setAttribute("Info","请重新输入!!");
return "redirect:/login.do";
}
}
}
打开login展示登录页面
表单提交到checklogin
校验成功,执行登陆成功操作
失败重定向到登录页面
注意此处的
request.getSession().setAttribute("Info","请重新输入!!");
是放到session中的,如果只是request.setAttribute是不行的,页面读取不到
因为重定向了
相当于重新一个request,放进去的值就变化了
顺便记一下,这几个区别
session 一次会话
request 一次请求
就像两个人对话,request只有在你说一句话的时候,就有一个,别人说话,或者你说下一句话,就换了
对话 就是你们来来回回的说,他都是同一个
比如提交一个表单就是一个请求,打开一个超链接也是一个请求,当请求结束这个request也就消亡了
当用户第一次和服务器建立连接时,服务器就会产生一个session直到用户离开或超时,比如关闭浏览器session也会销毁
或者说,你存储在request中的,在当次请求中都是存在的,如果你redirect就不行了
但是,session,你页面怎么跳转,他都还在的
他们都可以存很多东西,能放得东西也没啥区别,区别主要在于声明周期
直接在web contain中进行对象的实例化。
内置对象
类型
作用域
pageContext
javax.servlet.jsp.pageContext
page
request
javax.servlet.http.HttpServletRequest
request
response
javax.servlet.http.HttpServletResponse
page
session
javax.servlet.http.HttpSession
session
application
javax.servlet.ServletContext
application
config
javax.servlet.ServletConfig
page
out
java.servlet.jsp.JspWriter
page
page
java.lang.Object
page
exception
java.lang.Throwable
page
顾名思义,内置对象就是本来就有的意思,直接可以使用
设置属性:public void setAttribute(String name,Object.value)
取得属性:public void getAttribute(String name)
看表格可以看出来,他们的作用域可以区分为四种
在一个页面范围内:page
在一次服务器请求范围内:request
在一次会话范围内:session
在一个应用服务器范围内:application
Session对象主要用于保存用户的各种信息,直到它的生命周期超过或被人为释放掉为止,可以通过session对象来判断此用户是否是合法用户。
Session对象是javax.Servlet.http.HttpSession接口的实例化对象,session属于http协议范畴之内的对象,所以只有唯一http包下有此接口,没有任何继承关系,用户只要一连接到服务器,则立刻分配一个session给用户。
spring原理 实践解析-简单的helloworld
spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
springmvc整合mybatis完整项目示例
springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
springmvc 项目完整示例08 前台页面以及知识点总结
maven项目整合springmvc整合mybatis
eclipse 创建maven 项目 动态web工程完整示例
eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合
springmvc 项目完整示例08 前台页面以及知识点总结的更多相关文章
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...
- springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...
- springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml <?xml version=" ...
- springmvc 项目完整示例03 小结
利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n ---internationalization 不就是i和n之间有18个字母... http://logging.a ...
- springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...
- springmvc 项目完整示例09 maven项目创建
需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
随机推荐
- JavaScript遍历对象4种方法和遍历数组的3种方式 代码
//遍历对象 4种方法 //Object.keys(obj).forEach() console.log("keys...遍历</br>") var obj1 = { ...
- 分布式、集群、微服务、SOA 之间的区别
分布式:不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 集群:多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备共同对外提供服务 SOA:Service Oriented Ar ...
- Redis sentinel 哨兵模式
一.sentinel介绍 Sentinel作用: 1):Master状态检测 2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Maste ...
- 《SQL优化入门》讲座总结
MySQL运行机制 MySQL每个query只能运行在一个CPU上,更多的CPU,更快的CPU会更有利于并发 MySQL执行计划 Using filesort: 表示无法利用索引完成排序,也有可能是因 ...
- 34 文件地理数据库(GDB)变文件夹了怎么办
我们都知道文件地理数据库(GDB)是ArcGIS软件特有的格式,有其独特的设计之处,在文件资源管理器中显示为.gdb的文件夹,但是里面的文件却看不明白,而且将gdb文件夹在Windows资源管理器中直 ...
- d3.js做的柱状图
window.onload = function(){ var dataArray = [23, 13, 21, 14, 37, 15, 18, 34, 30]; var height = 400,w ...
- Hadoop源码分析(1):HDFS读写过程解析
一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ...
- 大数据BI框架知识点备注
将这段时间的一些基于大数据方案的BI知识点暂时做些规整,可能还存在较多问题,后续逐步完善修改. 数据模型: 1.星型模型和雪花模型,同样是将业务表拆分成事实表和纬度表:例如一个员工数据表,可以拆分为员 ...
- HTML5调用手机摄像机、相册功能 <input>方法
最近用MUI框架做webapp项目,在有PLUS环境的基础上能直接调用手机底层的API来使用拍照或从相册选择上传功能! 在查资料的时候,想起了另一种用input调用摄像和相册功能的方法,之前没有深入了 ...
- Http 1.x弊端与Http 2.0比较
HTTP2.0作为新版协议,改动细节必然很多,不过对应用开发者和服务提供商来说,影响较大的就几点. 新的二进制格式(Binary Format) http1.x诞生的时候是明文协议,其格式由三部分组成 ...