添加验证语句,凡是session当中没有用户信息的一律跳到form.jsp
时间: 2024-10-16 10:20:49 浏览: 2
在Servlet或JSP应用中,如果你想要确保只有已登录的用户才能访问某些页面,通常会在控制器或过滤器中添加验证语句。如果用户的Session(会话)中没有存储的有效用户信息,你可以采用以下步骤:
1. 创建一个Filter或Servlet监听器,检查`HttpServletRequest`对象的`getSession()`方法,看是否有对应的User对象。
```java
HttpServletRequest request = ...;
HttpSession session = request.getSession();
if (session.getAttribute("user") == null) {
// 用户未登录,跳转到login.jsp或form.jsp
response.sendRedirect("/login.jsp");
return; // 或者response.getWriter().print("需要登录");
}
```
2. 在jsp文件(如form.jsp)中,可以设置一个链接或按钮指向登录页面,让用户可以返回并输入用户名和密码。
```jsp
<a href="/login.jsp">登录</a>
<form action="/processForm" method="post">
<!-- form内容 -->
</form>
```
这样,当用户试图访问form.jsp之前,如果没有有效的Session数据,系统会自动将他们重定向到登录页面。
相关问题
6. 请编写一个简单的 JSP 页面,显示英文字母表。 7.请简单叙述 include 指令标记和 include 动作标记的不同. 8. 编写三个 JSP 页面:main.jsp、circle jsp、ladder.jsp, 将三个 JSP 页面保存在 同一web 服务目录中。main.jsp 使用 include 动作标记加載 circle.jsp 和ladder.jsp页面。circle.jsp 页面可以计算并显示圆的面积。ladder.jsp页面可以计算并显示梯形的面积。当 circle.jsp 和ladder.jsp 被加载时获取main.jsp 页面include 动作标记的param 子标记提供的圆的半径以及梯形的上底、下底和高的值。 1.假设JSP 使用的表单中有如下的 GUI(复选框 <input type="checkbox" name="item" value="bird"> , sinput type='checkbox" name="item" value="apple">苹果 sinput type="'checkbox" name="item" value="cat">猫 sinput type="checkbox" name="item" value="moon">月亮 该表单所请求的 JSP 可以使用内罝对象 request 获取该表单提交的数据.那么.下列 哪些是 request 获取该表单提交的值的正确语句? A. String a-request.getParameter("item"); B. String b=request.getParameter("checkbox"); C. String c(]=request.getParameter Values("item"); D. String d[]=request. getParameter Values("checkbox"); 2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处理?3.编写两个jsp 页面 inpuString.jsp 和 computer.jsp,用户可以使用 inputString.isp 提供的表单输入一个字符串,并提交给 computer.isp 页面,该页 面通过内置对象获取 inputString.jsp 页面提交的字符串,计算并显示该宇符串的长度。 4.response 调用 sendRedirect(URL: url方法的作用是什么? 5.一个用户在不同web 服务目录中的session 对象相同吗? 6.一个用户在同一Web服务目录的不同子目录的session 对象相同吗?
6. JSP 页面代码:
```jsp
<html>
<head>
<title>英文字母表</title>
</head>
<body>
<h1>英文字母表</h1>
<%
for(char c = 'A'; c <= 'Z'; c++){
%>
<%= c %>
<%
}
%>
</body>
</html>
```
7. include 指令标记和 include 动作标记的不同:
include 指令标记是在 JSP 页面的静态编译阶段就将被处理,即将被包含的文件的内容复制到原文件中,然后一起编译成一个页面。而 include 动作标记是在 JSP 页面的运行时动态执行,即在请求被发送到服务器后,才会去执行被包含的文件,并将其结果包含到原文件中。
8. main.jsp 代码:
```jsp
<html>
<head>
<title>主页</title>
</head>
<body>
<h1>主页</h1>
<jsp:include page="circle.jsp">
<jsp:param name="radius" value="6" />
</jsp:include>
<br/>
<jsp:include page="ladder.jsp">
<jsp:param name="upper" value="3" />
<jsp:param name="bottom" value="8" />
<jsp:param name="height" value="4" />
</jsp:include>
</body>
</html>
```
circle.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
double radius = Double.parseDouble(request.getParameter("radius"));
double area = Math.PI * radius * radius;
DecimalFormat df = new DecimalFormat("#.##");
%>
<p>半径为 <%= radius %> 的圆的面积为 <%= df.format(area) %></p>
```
ladder.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
double upper = Double.parseDouble(request.getParameter("upper"));
double bottom = Double.parseDouble(request.getParameter("bottom"));
double height = Double.parseDouble(request.getParameter("height"));
double area = (upper + bottom) * height / 2;
DecimalFormat df = new DecimalFormat("#.##");
%>
<p>上底为 <%= upper %>, 下底为 <%= bottom %>, 高为 <%= height %> 的梯形的面积为 <%= df.format(area) %></p>
```
1. 正确语句为 D,即 `String d[]=request.getParameterValues("checkbox");`。
2. 需要在 JSP 页面的头部设置编码方式:`<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>`,然后在接收信息的页面中,使用 `new String(request.getParameter("parameter").getBytes("ISO-8859-1"), "UTF-8")` 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码的字符串。
3. inputString.jsp 代码:
```jsp
<html>
<head>
<title>输入字符串</title>
</head>
<body>
<h1>输入字符串</h1>
<form method="post" action="computer.jsp">
请输入字符串:<input type="text" name="str"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
computer.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
String str = request.getParameter("str");
int length = str.length();
%>
<p>您输入的字符串是: <%= str %>,长度为: <%= length %></p>
```
4. sendRedirect 方法的作用是将请求重定向到另一个 URL,即将客户端的请求发送到另一个页面或网站。该方法会向客户端发送一个 HTTP 重定向响应,使其重新发送请求到指定的 URL。
5. 不同的 web 服务目录中 session 对象不同,即使是同一用户;但是同一 web 服务目录的不同子目录中 session 对象是相同的,即使是不同的 JSP 页面。
(1)创建user表。 (2)编写user表的JavaBean。 (3)实现登录功能。 (4)实现index.jsp页面用于显示用户名。显示“用户信息”超链接,点击该超链接跳转到userList.jsp。如果用户没有登录,在index.jsp页面中就显示一个用户登录的超链接。 (5)userList页面以table的形式显示用户信息。 (6)添加用户,编辑用户,删除用户代码
好的,下面我将给出实现这些功能的示例代码。
(1)创建user表
在MySQL数据库中创建一个名为user的表,包含id、username、password等字段,可以使用如下SQL语句:
```
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
```
(2)编写user表的JavaBean
在Java Web应用程序中,可以创建一个User类,包含与user表中相同的字段,并提供对应的getter和setter方法。示例代码如下:
```
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
(3)实现登录功能
下面是实现登录功能的示例代码:
LoginServlet.java
```
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 检查用户名和密码是否正确,省略此部分代码
// 将用户信息保存在Session中
User user = new User();
user.setId(1);
user.setUsername(username);
request.getSession().setAttribute("user", user);
// 重定向到主页
response.sendRedirect("index.jsp");
}
}
```
login.jsp
```
<form action="login" method="post">
<label>Username:</label>
<input type="text" name="username" /><br />
<label>Password:</label>
<input type="password" name="password" /><br />
<input type="submit" value="Login" />
</form>
```
(4)实现index.jsp页面用于显示用户名
下面是实现index.jsp页面的示例代码:
index.jsp
```
<%-- 检查用户是否已登录 --%>
<c:if test="${not empty sessionScope.user}">
Welcome, ${sessionScope.user.username}!
<a href="userList.jsp">User Info</a>
<a href="logout">Logout</a>
</c:if>
<c:if test="${empty sessionScope.user}">
<a href="login.jsp">Login</a>
</c:if>
```
(5)userList页面以table的形式显示用户信息
下面是实现userList.jsp页面的示例代码:
userList.jsp
```
<%-- 获取所有用户信息 --%>
<%
List<User> userList = new ArrayList<>();
// 从数据库中获取用户信息,省略此部分代码
%>
<%-- 显示用户信息 --%>
<table>
<tr>
<th>ID</th>
<th>Username</th>
<th>Password</th>
<th>Operation</th>
</tr>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td>
<a href="editUser.jsp?id=${user.id}">Edit</a>
<a href="deleteUser?id=${user.id}">Delete</a>
</td>
</tr>
</c:forEach>
</table>
```
(6)添加用户、编辑用户、删除用户
下面是实现添加用户、编辑用户、删除用户的示例代码:
AddUserServlet.java
```
public class AddUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 将用户信息保存到数据库中,省略此部分代码
// 重定向到用户列表页面
response.sendRedirect("userList.jsp");
}
}
```
editUser.jsp
```
<%-- 获取要编辑的用户信息 --%>
<%
int id = Integer.parseInt(request.getParameter("id"));
User user = new User();
// 根据id从数据库中获取用户信息,省略此部分代码
%>
<%-- 显示用户编辑界面 --%>
<form action="updateUser" method="post">
<input type="hidden" name="id" value="${user.id}" />
<label>Username:</label>
<input type="text" name="username" value="${user.username}" /><br />
<label>Password:</label>
<input type="password" name="password" value="${user.password}" /><br />
<input type="submit" value="Save" />
</form>
```
UpdateUserServlet.java
```
public class UpdateUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
String username = request.getParameter("username");
String password = request.getParameter("password");
// 更新用户信息,省略此部分代码
// 重定向到用户列表页面
response.sendRedirect("userList.jsp");
}
}
```
DeleteUserServlet.java
```
public class DeleteUserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
// 删除用户信息,省略此部分代码
// 重定向到用户列表页面
response.sendRedirect("userList.jsp");
}
}
```
以上就是实现Java Web应用中用户登录、显示用户信息和进行用户管理的示例代码。需要根据具体的业务需求进行修改和完善。
阅读全文