JSP入门

一、 初始JSP

HTML + Java代码 = JSP

1 声明 <%! %> 可以编写变量声明 方法声明
2 脚本 <%%> 可以编写变量声明 调用方法等
3 表达式 <%= %> 可以用于向页面输出内容 能调用有返回值的方法和直接输出一些变量 结尾不能写;号

二、重定向和转发

转发 相对路径

request.getRequestDispatcher("index.jsp").forward(request,response);

重定向 绝对路径

response.sendRedirect(request.getContextPath()+"/login.jsp")

使用request.getContextPath()获取到项目根路径

什么是项目根路径

localhost:8080/bus/login/login.jsp 项目根路径就是 bus

重定向与转发区别

1、重定向 可以跳转到任意的资源地址,但是转发是服务器内部的资源跳转,智能跳转到服务器内部的一些页面

2、转发的请求地址不发生改变,重定向的地址变成对应的跳转地址

3、请求转发是一次请求的多次跳转,重定向是开启新的请求,与之前的请求无关。

4、在请求中携带的setAttribute信息,只能保证在同一个请求中有效,因此使用SetAttribute的时候,应该是转发

三、传递信息

request.setAttribute("error","用户名或者密码错误")

获取到传递的信息

Object error = request.getAttribute("error")

四、中文乱码问题

在Tomcat 8.0中GET请求解决了乱码问题,但是POST还是存在中文乱码

Tomcat8.0以前解决中文乱码

方式1: 首先将内容以ISO解码成字节,然后再将以UTF8将其进行编码

String userCode = request.getParameter("userCode")
//解码
byte[] userCodeByte = userCode.getBytes("ISO-8859-1");
//编码
userCode = new String(userCodeByte,"UTF-8");

方式2: 仅对POST请求有效,在最前面写

request.setCharacterEncoding("UTF-8");
String userCode = request.getParameter("userCode")

方式3:修改Tomcat中的conf中的server.xml文件,将ISO-8859-1 改为 UTF-8

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

五、cookie和session

登录成功后,在主界面要显示当前登录的用户名

可以将数据存储在Session域中,然后从session中取出

session.setAttribute(key,value);

Session也是JSP的内置对象,他表示一次会话,多次请求多次响应的这整个过程就是一次会话。

每次会话都有一个会话id,可以通过getId获取

会话的生命周期:只要没有完全关闭浏览器都是同一个会话。不同浏览器的会话不一样。默认会话有效期为30分钟

修改Tomcat中的web.xml 修改session,可以改变时间,或者在自己的web.xml中修改session,优先级会比之前的高

如果关闭浏览器之后,怎么保证之前的登录有效呢?

cookie是浏览器用于在本地存储一些网站状态的。

Cookie cookie = new Cookie("loginUserName",username);
cookie.sexMaxAge(60);
response.addCookie(cookie);

Cookie与session区别

1、 Cookie是浏览器端的,session是服务器端的

2、生命周期不同。session是从客户端第一次请求开始,有服务器分配,当浏览器完全关闭或者无操作时销毁。cookie是由服务器响应回来之后才开始生效的。

3、 session可以存储Object类型的值,Cookie只能存储String类型

六、application对象

统计网站访问次数

步骤:先获取到当前网站的历史统计次数,然后自增,如果不能获取到,则初始化统计次数。

Object obj =  application.getAttribute("ACCESS_COUNT");
int count;
if(obj == null){
	count = 1;
} else {
	count = 1 + (Integer)obj;
}

application.setAttribute("ACCESS_COUNT",count);

七、JSP中写Java代码

遍历一个数组然后展示

第一种方式

<select name="userRole">
	<option value="0"> --请选择-- </option>
	<%
		RoleDao roleDao = new RoleDaoImpl();
		//获取到关于Role的一个list
		List<Role> roleList = roleDao.getList();
		
		//遍历
		for (Role role : roleList) {
			String str = String.format("<option value='%s'>%s</option>",role.getId(),role.getRoleName());
		}
</select>

第二种方式

<select name="userRole">
	<option value="0"> --请选择-- </option>
	<%
		RoleDao roleDao = new RoleDaoImpl();
		//获取到关于Role的一个list
		List<Role> roleList = roleDao.getList();
		
		//遍历
		for (Role role : roleList) {
	%>
		<option value="<%=role.getId()%>"><%=role.getRoleName()%></option>
		
	<%	
		}
	%>
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值