Java-Servlet跳转Servlet以及传参
原创约 1022 字大约 3 分钟...
Java-Servlet跳转Servlet以及传参
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
最近项目中有这么一个需求:
JSP中的按钮点击------->Servlet-1--------->Servlet-2作出判断并传参------JSP页面接收参数并展示
JSP跳转Servlet
login.jsp button2跳转到ToRegisterViewServlet
<form name="form1" method="post" action="<%=request.getContextPath()%>/LoginServlet" id="loginForm">
<--此处的action跳转到对应的LoginServlet是通过button为submit提交触发的-->
<table width="933" border="0" align="center" cellpadding="0" cellspacing="0" style="margin:120px;">
<tr>
<td height="412" valign="top" background="<%=request.getContextPath()%>/images/bg_imgJava_46_1.jpg">
<table height="300" border="0" cellspacing="0">
<tr>
<td colspan="2">
<table width="200" border="0" cellspacing="0">
<tr>
<td width="78">
<input name="button" type="button" class="butlogin" id="button" value="" onClick="UserLogin()">
<--这是登录按钮-->
</td>
<td> </td>
<td width="78">
<input name="button2" type="button" class="butzc" id="button2"value="" onClick="UserRegistration()">
<--这是注册铵钮需要跳转到另一个Servlet-->
<script>
function UserRegistration(){
location.href = "<%=request.getContextPath()%>/ToRegisterViewServlet" ;
}
</script>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
ToRegisterViewServlet
package net.ptcs.my12306.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.ptcs.my12306.service.ProvinceService;
/**
* Servlet implementation class ToRegisterViewServlet
*/
@WebServlet(description = "去往注册页面的servlet", urlPatterns = { "/ToRegisterViewServlet" })
public class ToRegisterViewServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//把所有省份数据传给页面
request.setAttribute("provinces", ProvinceService.getInstance().getAllProvince());
request.getRequestDispatcher("/user_register.jsp").forward(request, response);
}
}
user_register.jsp 核心代码
<form action="<%=request.getContextPath()%>/UserServlet" method="post">
<input name="submit" type="submit" value="提交">
<input name="reset" type="submit" value="重置">
</form>
UserServlet
package net.ptcs.my12306.controller;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.ptcs.my12306.entity.Users;
import net.ptcs.my12306.service.UserService;
/**
* Servlet implementation class UserServlet
*/
@WebServlet(description = "", urlPatterns = { "/UserServlet" })
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//1.获取数据
String username=request.getParameter("username");
String password=request.getParameter("password");
String confirm_password=request.getParameter("confirm_password");
String sex=request.getParameter("sex");
String birthday_date=request.getParameter("birthday");
//2.数据的非空校验和合法性校验
StringBuffer sb = validateRegisterForm(username, password, confirm_password);
if(sb.length() > 0) {
//如果校验不通过,那么返回注册页面,让用户再注册一次
request.setAttribute("message", "必填信息为空,请重新注册");
request.getRequestDispatcher("/ToRegisterViewServlet").forward(request, response);
}else {
//3.调用底层service的注册方法添加用户到数据库
Date birthday=null;
try {
birthday=new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("birthday"));
} catch (Exception e) {
e.printStackTrace();
}
UserService userService=UserService.getInstance();
Users user = new Users(request.getParameter("username"), request.getParameter("password"),
request.getParameter("sex").charAt(0), birthday);
user.setLoginIp(request.getRemoteAddr());
//服务端校验通过之后,注册方法调用之前,应该先判断用户名是否已经存在
/*
* 则需要定义判断用户名是否已经存在的方法,如果存在则返回注册页面,提示用户名已经存在,
* 如果不存在则继续注册
*/
if(userService.isExistsUserName(username))
{
//用户名已经存在,回到注册页面
request.setAttribute("message", "用户名已被占用");
request.getRequestDispatcher("/ToRegisterViewServlet").forward(request, response);
}else
{
if(userService.register(user))
{
//生产环境不用挨骂的代码:需求,既要有弹窗又要重定向登录页面
response.sendRedirect(request.getContextPath()+"/login.jsp?message=registersuccess");
}else
{
//注册失败,回到注册页面
request.setAttribute("message", "注册失败");
request.getRequestDispatcher("/ToRegisterViewServlet").forward(request, response);
}
}
}
}
/**
* 对表单进行服务端校验的方法
* @param username
* @param password
* @param confirm_password
* @return
*/
private StringBuffer validateRegisterForm(String username, String password,
String confirm_password) {
StringBuffer validate_message=new StringBuffer();
if(username==null||"".equals(username))
{
validate_message.append("用户名为空");
}
if(password==null||"".equals(password)||confirm_password==null||"".equals(confirm_password))
{
validate_message.append("密码或者确认密码为空");
}
if(!password.equals(confirm_password))
{
validate_message.append("两次密码输入不一致");
}
if(validate_message.length()>0)
{
System.out.println(validate_message.toString());
return validate_message;
}
return validate_message;
}
}
因此处设置的键是message而UserServlet是跳转到 ToRegisterViewServlet 而 ToRegisterViewServlet 是跳转到 user_register.jsp
user_register.jsp接收参数
- jsp页面中写java代码
<span class="text_red">
<%=request.getAttribute("message")==null?"":request.getAttribute("message") %> </span>
- EL表达式
<span class="text_red">${message}</span>
拓展: EL表达式${message}默认从请求域拿数据 第一个是request 第二个是session 第三个是Application 并且EL表达式会默认进行非空判断
效果如下:
分割线
相关信息
以上就是我关于 Java-Servlet跳转Servlet以及传参 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4