jsp有控制验证的功能吗?
jsp有控制验证的功能吗?
就像asp.net一样,可以控制一个文件夹中的内容,只有通过登陆才能访问,在.net中是在web.config配置的。不知道java有没有
说的具体些
[解决办法]
Java 里是在web.xml配置。好像。
用Filter可以很好的控制。具体可以去搜一下。很多的。
下面是我的一个练手项目中的代码,你参考一下吧。很多代码是IDE生成的。我使用Java Studio Enterprise
8。
web.xml 部分配置
<filter>
<filter-name> VerifyAdminFilter </filter-name>
<filter-class> com.ustb.lab.businessLogic.VerifyAdminFilter </filter-class>
</filter>
<filter-mapping>
<filter-name> VerifyAdminFilter </filter-name>
<url-pattern> /cn/mng/* </url-pattern>
</filter-mapping>
[解决办法]
VerifyUserFilter.java
内容太长了。发表不了。给出代码片段吧:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (debug) log( "VerifyUserFilter:doFilter() ");
doBeforeProcessing(request, response);
Throwable problem = null;
try {
HttpServletRequest hrequest = (HttpServletRequest)request;
HttpServletResponse hresponse = (HttpServletResponse)response;
HttpSession loginsession = hrequest.getSession(false);
if (loginsession.getAttribute( "LogInlet.userName ") == null) {
//out.println( "please log in before trying to use this facility , click " + " <a href= \ "index.jsp\ "> click here to login! </a> ");
System.out.println( "Filter rejected, please go to the sign on page ");
hresponse.sendRedirect( "clublogin.jsp "); // go to the sign on page
}else{
chain.doFilter(request, response);
}
} catch(Throwable t) {
//
// If an exception is thrown somewhere down the filter chain,
// we still want to execute our after processing, and then
// rethrow the problem after that.
//
problem = t;
t.printStackTrace();
}
doAfterProcessing(request, response);
//
// If there was a problem, we want to rethrow it if it is
// a known type, otherwise log it.
//
if (problem != null) {
if (problem instanceof ServletException) throw (ServletException)problem;
if (problem instanceof IOException) throw (IOException)problem;
sendProcessingError(problem, response);
}
}
[解决办法]
LogInlet.java (调用代码)
片段:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html;charset=UTF-8 ");
request.setCharacterEncoding( "UTF-8 ");
PrintWriter out = response.getWriter();
String userName = " ";
String userPw = " ";
UserTableTools userTools = new UserTableTools();
userName = request.getParameter( "userName ");
userPw = request.getParameter( "userPw ");
String loginresoult = null;
response.setContentType(CONTENT_TYPE);
if ( (userName != null) && (userPw != null) ) {// username is correct
if (userTools.VerifyUser(userName,userPw)) { // password is correct
//loginresoult = "Welcome " + userName + "please click " + " <A HREF = \ "cn/\ "> here to home </A> ";
// retrieve loginsession, if not exist, create new one
HttpSession loginsession = request.getSession(true);
//save the userName, password, secrects in loginsession object
loginsession.setAttribute( "LogInlet.userName ", userName);
loginsession.setAttribute( "LogInlet.password ", userPw);
loginresoult = "1;URL=cn/index.jsp ";
} else{ // password not correct
loginresoult = "1;URL=cn/error.jsp?errorResult= " + java.net.URLEncoder.encode( "错误的用户名密码, ", "utf-8 ") +
" <A HREF = \ "clublogin.jsp\ "> " + java.net.URLEncoder.encode( " 请点击这里登录! ", "utf-8 ") + " </A> ";
}
} else { // no input userName or Password, or input userName does not exist in file
loginresoult = "1;URL=cn/error.jsp?errorResult= " + java.net.URLEncoder.encode( "请你先登录! ", "utf-8 ") +
" <A HREF = \ "clublogin.jsp\ "> " + java.net.URLEncoder.encode( " 点击这里登录! ", "utf-8 ") + " </A> ";
}
response.setHeader( "Refresh ",loginresoult);
// send loginresoult to client
}
[解决办法]
you
filter