首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

jsp有控制验证的功能吗?解决方法

2012-01-12 
jsp有控制验证的功能吗?jsp有控制验证的功能吗?就像asp.net一样,可以控制一个文件夹中的内容,只有通过登陆

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

热点排行
Bad Request.