1 配置Struts的映射地址
2 配置<form-bean>: 添加登錄表單loginForm
3 配置<action>:添加登錄組件login
4 開發ActionForm Bean:創建登錄表單類LoginForm.java
5 開發Action:創建登錄處理類LoginAction.java
1 在使用Struts進行開發時 需要避免對JSP文件的直接訪問 這樣做的目的是爲了將所有的請求都交給Struts來統一處理
在web.xml中進行映射配置
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
對於每一個name.do的請求 都必須在struts-config.xml中配置與"name"對應的組件 該組件是通過<action>元素來註冊的 使用<action>的第一種配置形式-直接轉發方式 來配置一個地址"index.do" 負責轉發到登錄頁面login.jsp
- <action path="/index" forward="/login.jsp" />
2 修改login.jsp的登錄提交地址爲login.do
- <form name="form1" action="login.do" method="post">
3 配置<form-bean> : 添加登錄表單loginForm
- <form-bean name="loginForm"
- type="com.demo.struts.forms.LoginForm">
- </form-bean>
4 配置<action>:添加登錄組件login
- <action path="/login" name="loginForm"
scope="request"
- type="com.demo.struts.actions.LoginAction" input="/login.jsp">
- <forward name="success" path="/welcome.jsp"
/>
- <forward name="failure" path="/login.jsp"
/>
- </action>
5 開發ActionForm Bean:創建登錄表單類 LoginForm.java
- package com.demo.struts.forms;
- public
class LoginForm extends ActionForm
{
- proteced String username = nill;
public
String getPassword()
{
- return password;
- }
- public
void setPassword(String password)
{
- this.password
= password;
- }
- public
String getUsername()
{
- return username;
- }
- public
void setUsername(String username)
{
- this.username
= username;
- }
- }
6 開發Action 創建登錄處理類LoginAction.java
- package com.demo.struts.actions;
- import
java.sql.Connection;
- import
java.sql.ResultSet;
- import
java.sql.Statement;
- import
javax.servlet.http.HttpServletRequest;
- import
javax.servlet.http.HttpServletResponse;
- import
javax.servlet.http.HttpSession;
- import
javax.sql.DataSource;
- import
org.apache.log4j.Logger;
- import
org.apache.struts.action.ActionErrors;
- import
org.apache.struts.action.ActionForm;
- import
org.apache.struts.action.ActionForward;
- import
org.apache.struts.action.ActionMapping;
- import
org.apache.struts.action.ActionMessage;
- import
org.apache.struts.actions.DispatchAction;
- public
class LoginAction extends DispatchAction
{
- public ActionForward
execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest
request, HttpServletResponse response)
- throws
Exception {
- ActionErrors errors
= new ActionErrors();
- ActionForward forward
= new ActionForward();
- LoginForm loginForm
= (LoginForm) form;
- try
{
- // get parameters
- String username
= loginForm.getUsername();
- String password
= loginForm.getPassword();
- // invalidate the original session if exists
- HttpSession session
= request.getSession(false);
- if
(session !=
null)
{
- session.invalidate();
- }
- // create a new session for the user
- session
= request.getSession(true);
- // login
- boolean isValid = false;
- if (username.equals("admin")&&password.equals("admin"))
- {
- isValid = true;
- }
- if
(isValid)
{
- session.setAttribute(Constants.USERNAME_KEY,
username);
- }
else {
- errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionMessage(
- "login.message.failed"));
- }
- }
catch (Exception e)
{
- errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionMessage(
- "login.message.failed"));
- }
- // If a message is required, save the specified key(s)
- // into the request for use by the <struts:errors> tag.
- if
(!errors.isEmpty())
{
- saveErrors(request, errors);
- forward
= mapping.findForward(Constants.FAILURE_KEY);
- }
else {
- forward
= mapping.findForward(Constants.SUCCESS_KEY);
- }
- // Finish with
- return
(forward);
- }
- }